如何在Gherkin中进行块注释?

94
在gherkin语法(Cucumber和SpecFlow使用)中,我可以通过在行首加上 '#' 来注释掉一行代码。
有没有办法注释掉多行代码?

2
我没有尝试过,但如果Artem的解决方案是正确的,那么被接受的解决方案应该改为那个。 - KobeJohn
很多编辑器都可以使用键盘快捷键将多行前缀转换为单行。在 Atom 中,快捷键是 CMD + / ;) - cregox
这在Gherkin中是不支持的。原因是您已经可以引入描述块,根据需要详细说明关键字:特性,场景大纲,场景和示例。这些的多行注释将成为反模式。对于其余关键字,您可以使用单行注释。为它们引入多行注释应该相当罕见,并且可能表明缺乏清晰度。 - Kevin Johnson
14个回答

63

它不受Gherkin支持,因此您必须在所有行前加上#。

如果您使用SpecFlow Visual Studio扩展程序(v1.9.2),则可以简单地选择行并将其切换为注释和反向操作。默认的快捷键是Ctrl + K,C用于注释,Ctrl + K,U用于取消注释。

您也可以在Visual Studio中“解决”此问题,使用多行编辑功能。(请参见http://weblogs.asp.net/scottgu/archive/2010/04/26/box-selection-and-multi-line-editing-with-vs-2010.aspx)。您只需按住ALT并使用鼠标选择行的开头。使用此功能,您可以同时输入所选所有行。同样地,您也可以通过选择要删除的所有#字符来删除它们。


7
在 RubyMine 中,您可以通过选择代码行并按下 Ctrl+/ 来注释它们,并以相同的方式取消注释。非常有用。 :) - Doug Noel
我经常使用alt技巧。当我需要添加“和”时,对于SQL语句也非常方便,用于where-in子句。+1 - Caleb Postlethwait

27

是的,有一种类型的注释叫做PyStrings。在此处示例中可以看到。

如果你在Feature、Scenario和其他一些元素之后使用它,它将起作用。

Feature: my feature
  """ some block comment
      still block comment
  """ end of block comment
Scenario: my feature
  """ some block comment
      still block comment
  """ end of block comment

另一方面,如果您想要注释掉某些步骤,则不起作用。

我认为您可以配置您的IDE以在标准键组合上注释一行。例如,IntelliJ识别*.feature文件并允许直接注释掉行。Notepad++或甚至VS也可以实现这个功能。


从Python转过来,看到三引号被用成那样真的很奇怪。不过如果能解决问题的话,这是个好方法! - KobeJohn
5
这些地方不需要使用三引号,因为Cucumber会将这里的任何文本都视为注释(即被忽略)。三引号用于步骤内给出/当/则的多行文本。 - csgero

9

单行注释:#

多行注释: 以"""开头 以"""结尾


7
Eclipse 中,针对单/多行 Gherkin 功能文件内容的注释,我们还可以执行以下操作。 添加新的文件关联
Windows > Preferences > General > Editors> File Associations > File types: > Add...
并添加一个新的文件类型:*.feature 为新文件类型关联编辑器
Associated Editors > > Add...
添加 Properties File Editor (Default).
现在重新打开文件,它将在 Properties File Editor 中打开,而不是在 Text editor 中打开。
这样做使我可以选择任意数量的行,并使用常见的注释快捷键 Ctrl+Shift+C 进行注释。

6

使用 CTRL + /

它非常好用。多行注释


最清晰的评论!非常感谢! - Cute Shark

5

评论:

单行 --> #

多行 --> """


2

在MAC上,使用“Command”键和“?”键来注释多行cucumber脚本。


2
你可以通过在Eclipse中选择要注释的所有行,然后按下"Ctrl + 加号/等于号键 + /"键来实现。

2
在Gherkin中没有块注释的功能,但是你可以通过选中需要注释的块并按下ctrl + /来注释多行内容。

1

实际上,我认为它不被支持。我已经从事Cucumber相关的工作约2年了,但我从未见过它。

你将不得不做很多#-lines ;).

我建议开始阅读github上的优秀wiki (https://github.com/cucumber/cucumber/wiki/Gherkin)


谢谢Marcus。你的答案是正确的,但我接受了Tz_的答案,因为它提供了解决方法。 - dbruning
2
哇 - 这是一个很酷的变通方法。我没想到过。 - Marcus Hammarberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接