如何在不删除功能的情况下禁用specflow(Gherkin)中的功能?


68

我有一些SpecFlow功能(使用Gherkin语法),我想暂时禁用该功能以阻止其测试运行吗?

有可以用来标记功能的属性吗?我猜测与Cucumber一起使用的某些东西也可能与SpecFlow一起使用。

Answers:


102

您可以使用标签@ignore标记功能:

@ignore @web
Scenario: Title should be matched
When I perform a simple search on 'Domain'
Then the book list should exactly contain book 'Domain Driven Design'

1
太酷了,在哪里可以找到属性列表?
西蒙保持

3
我们在这里谈论标签。@ignore是唯一的“预定义”标签。可以自由定义其他标签,以控制“前/后”钩子并有选择地运行功能。
jbandi 2010年

1
我会看一下生成器的代码,因为它提供了最准确的答案:github.com/techtalk/SpecFlow/blob/master/Generator / ...还有SpecFlow更改日志github.com/techtalk/SpecFlow/blob/master/ changelog.txt,我引用:“ MsTest:支持MSTest的[Owner]和[WorkItem]属性,并带有\ @owner:foo \ @workitem:123之类的标签(问题162,请求161)”但是,属性列表取决于您所使用的测试框架和测试运行程序以及SpecFlow :)
Borislav T

我发现@ignore属性需要添加到功能中的每个场景中。
DanH '17

@DanH,您应该可以将整个功能标记为@ignore
nitzel '17

14

在最新版本的Specflow中,您现在还必须提供带有标签的原因,如下所示:

@ignore("reason for ignoring")

编辑:出于某种原因,它用空格中断,但这有效:

@ignore("reason")

2

正如jbandi所建议的,您可以使用@ignore标记。

标签可以应用于:

  • 一个场景
  • 完整功能

以NUnit作为测试提供者,生成代码的结果是插入

[NUnit.Framework.IgnoreAttribute()]

方法或类。


2
Feature: CheckSample

@ignored
Scenario Outline: check ABC    #checkout.feature:2
Given I open the applciation
When I enter username as "<username>"
And I enter password as "<password>"
Then I enter title as "<title>"
Examples:
| username | password |
| dude     | daad     |

将以上内容视为功能文件“ CheckSample.feature”

下面是您的步骤文件,它只是部分文件:

public class Sampletest {


@Given("^I open the applciation$")
public void i_open_the_applciation() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    //throw new PendingException();
}

现在,下面是跑步者文件:

@RunWith(Cucumber.class)
@CucumberOptions(
        plugin = {"pretty", "html:target/reports", 
"json:target/reports/cucumber-report.json"},
        monochrome = true,
        tags = {"~@ignored"}
        )

public class junittestOne {

   public static void main(String[] args) {
        JUnitCore junit = new JUnitCore();
         Result result = junit.run(junittestOne.class);
   }

  }

这里要注意的重要一点是,功能文件中的“ @ignored”文本在CujunberOptions(标签)中与“ junittestone”类文件中一起提到。另外,请确保您的项目中具有黄瓜,小黄瓜,Junit和其他jar的所有相关jar文件,并且已将它们导入到步骤定义(类)中。

由于“忽略”,执行测试时将跳过该方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.