Cucumber jvm 手动运行JVM测试

Cucumber jvm 手动运行JVM测试,cucumber-jvm,Cucumber Jvm,我有一点特殊的情况。基本上我有一个单元测试,用@test注释,在该测试中我需要执行一个JVM测试类 为什么??说来话长。与类加载器和RoboGuice有关,这并不重要,但它确实限制了我能做和不能做的事情 以下是测试方法: @Test public void runCucumberFeature() throws Exception { Cucumber cucumber = new Cucumber(MyCucumberTest.class); cucumber.run(new

我有一点特殊的情况。基本上我有一个单元测试,用@test注释,在该测试中我需要执行一个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注释


有人能帮忙吗?

我无法提供您正在寻找的解决方案,但是

。。。您是否考虑过对要手动运行的测试进行标记(例如,使用
@Manual

然后,您可以通过向JVM调用添加
--tags~@manual
来取消对
@RunWith
注释的注释,并排除手动测试


在手动JUnit调用中,您可以添加
--tags@manual

我不知道有@manual标记。这可能会有帮助。感谢您的建议,这是迄今为止最好的:-)标记是用户定义的-使用对您有意义的标记。您可以对一个场景应用多个标记,这使得为特定目的建立测试套件成为可能(例如\@回归、\@缺陷\ U 54321等)