我有一个配置为使用 Junit 运行的 Cucumber 项目,方法是将我的 Junit 测试配置为
@RunWith(Cucumber.class)
@CucumberOptions(
extraGlue = "me.jkstrauss.stepdefs.common",
plugin = {"pretty", "html:target/cucumber/cucumber.html"}
)
我正在尝试在 IntelliJ 中运行测试,一切正常。问题是当我查看结果时,我只能看到个别场景,而看不到步骤。当然,我可以直接在 IntelliJ 中将这些功能作为 Cucumber Java 测试运行,并且得到预期的输出。
问题是我想使用一些 JUnit 功能,例如 ClassRule,而这些功能不会作为专用 Cucumber Java 测试的一部分运行。有什么方法可以让我获得逐项列出的步骤,同时保留所有 JUnit 功能?
最佳答案
在对这个主题进行一些研究之后,我发现大多数 JUnit 插件功能都可以使用 Cucumber 插件在 Cucumber 中复制,因此我基本上将使用 Cucumber 插件运行所有测试。我仍然会使用 Junit 从命令行运行我的测试,无论哪种方式输出都会显示在屏幕上,但是在 IntelliJ 中运行 Cucumber 测试时,我可以使用 Cucumber 插件来完成我想用 Junit 插件做的任何事情。
@RunWith(Cucumber.class)
@CucumberOptions(
plugin = {"me.jkstrauss.HealthRunner$Resources"}
)
class HealthRunner {
public static class Resources implements EventListener {
@Override
public void setEventPublisher(EventPublisher publisher) {
publisher.registerHandlerFor(TestRunFinished.class, it -> {
// remove unsued resources
});
}
}
要在 Cucumber Run 配置中激活插件,只需添加 --plugin me.jkstrauss.HealthRunner$Resources
到“程序参数”。Cucumber 除了 TestRunFinished 之外还有很多其他的事件。查找 https://javadoc.io/static/io.cucumber/cucumber-plugin/6.10.4/io/cucumber/plugin/event/EventPublisher.html 的 API 文档其他选项。
关于intellij-idea - IntelliJ 中的 JUnit + Cucumber - 查看步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68318206/