IntelliJ 中的 JUnit + Cucumber - 查看步骤
JUnit + Cucumber in IntelliJ - See Steps
我有一个 Cucumber 项目,通过使用
配置我的 Junit 测试,使用 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 功能?
长话短说,当 IDEA 直接运行测试时,Cucumber 可以传达各个步骤的结果。然而,JUnits 模型不能很好地处理子测试步骤,因此它们被省略了。
目前下一个版本的 Cucumber 计划有 beforeall 和 after all hooks。
在对这个主题进行一些研究后,我发现大多数 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 运行 配置中激活插件,只需将 --plugin me.jkstrauss.HealthRunner$Resources
添加到“程序参数”。
Cucumber 除了 Test运行Finished 之外还有许多其他事件。查找 https://javadoc.io/static/io.cucumber/cucumber-plugin/6.10.4/io/cucumber/plugin/event/EventPublisher.html 的 API 文档以了解其他选项。
我有一个 Cucumber 项目,通过使用
配置我的 Junit 测试,使用 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 功能?
长话短说,当 IDEA 直接运行测试时,Cucumber 可以传达各个步骤的结果。然而,JUnits 模型不能很好地处理子测试步骤,因此它们被省略了。
目前下一个版本的 Cucumber 计划有 beforeall 和 after all hooks。
在对这个主题进行一些研究后,我发现大多数 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 运行 配置中激活插件,只需将 --plugin me.jkstrauss.HealthRunner$Resources
添加到“程序参数”。
Cucumber 除了 Test运行Finished 之外还有许多其他事件。查找 https://javadoc.io/static/io.cucumber/cucumber-plugin/6.10.4/io/cucumber/plugin/event/EventPublisher.html 的 API 文档以了解其他选项。