cucumber-jvm - 手动运行 Cucumber JVM 测试

标签 cucumber-jvm

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

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

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

关于cucumber-jvm - 手动运行 Cucumber JVM 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363472/

相关文章:

jenkins - 将多个 json 结果合并到一份更新的 Cucumber-JVM 报告中

testing - Cucumber-JVM Maven 集成问题

cucumber 3 : How to define a regular expression

java - cucumber jvm 似乎使用 System.exit

java - 结果集在 .next() 第一次迭代时关闭异常

java - 在 Java 环境中使用 org.openqa.selenium 测试 Electron 应用程序 (Intellij)

java - 如何将一个特征文件的数据(来自示例)传递到另一特征文件?

kotlin - 为什么在 Kotlin 中运行这个特定的 Cucumber 步骤时会出现 ArrayIndexOutOfBoundsException?

angularjs - Cucumber-java 与 Cucumber.js

cucumber - 如何编写场景大纲以捕获单个参数中的对象列表?