2012-07-06 146 views
2

我有点特殊情况。基本上我有一个单元测试,用@Test注释,而在那个测试中我需要执行一个Cucumber JVM测试类。手动运行黄瓜JVM测试

为什么?很长的故事。与类加载器和RoboGuice有关,这不是很重要,但它确实限制了我可以做什么和不可以做什么。

这里的测试方法:

@Test 
public void runCucumberFeature() throws Exception { 
    Cucumber cucumber = new Cucumber(MyCucumberTest.class); 
    cucumber.run(new RunNotifier()); 
} 

MyCucumberTest是一类我已经建立,并注明是这样的:

//@RunWith(Cucumber.class) 
@Cucumber.Options(format = {"pretty", "html:target/cucumber"}, strict=true) 
public class MyCucumberTest { 
    // Empty, as required by Cucumber JVM 
} 

为什么我注释掉@RunWith注解?因为如果我不这样做,那么Cucumber测试跑步者会拿起测试并运行测试,我不想因为我正在手动运行测试。

问题是上述不起作用。它看起来像Cucumber找到功能文件,它正在验证MyCucumberTest包含@Givens等,它甚至会打印出测试,就好像它正在运行它一样。

但它没有。没有代码在@Given,@When和@Then方法中执行。我不确定这是为什么,但我有一个模糊的想法,即Cucumber JVM测试运行器不想执行代码,因为该类未使用@RunWith注释。

任何人都可以帮忙吗?

回答

1

我不能提供你正在寻找的解决方案,但是....

...你认为标记要(与@Manual例如)手动运行测试?

然后,您可以取消注释@RunWith注释,并通过在您的Cucumber-JVM调用中添加--tags [email protected]来排除手动测试。

在你手动的JUnit调用,您可以添加--tags @Manual

+0

我不知道有一个@Manual标签。它可能有帮助。感谢您的建议,这是迄今为止最好的:-) – user1283068 2012-08-20 09:30:00

+1

这些标签是用户定义的 - 使用对您有意义的标签。您可以将多个标签应用到场景中,这样可以为特定目的构建测试套件(例如\ @Regression,\ @ Defect_54321等) – 2012-08-20 14:25:45