intellij-idea - IntelliJ 中的 JUnit + Cucumber - 查看步骤

标签 intellij-idea cucumber-java cucumber-junit

我有一个配置为使用 Junit 运行的 Cucumber 项目,方法是将我的 Junit 测试配置为

@RunWith(Cucumber.class)
@CucumberOptions(
        extraGlue = "me.jkstrauss.stepdefs.common",
        plugin = {"pretty", "html:target/cucumber/cucumber.html"}
)
我正在尝试在 IntelliJ 中运行测试,一切正常。问题是当我查看结果时,我只能看到个别场景,而看不到步骤。
IntelliJ w/ JUnit
当然,我可以直接在 IntelliJ 中将这些功能作为 Cucumber Java 测试运行,并且得到预期的输出。
IntelliJ w/ 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/

相关文章:

spring - 如何在 IntelliJ 的 Spring Boot 项目中使用实时编辑

java - IntelliJ 正在生成私有(private) getter

Java - 小 cucumber 和 cucumber : Pass an object or list of objects on a vertical table instead of horizontal

cucumber-jvm - 如何将自定义 softAssertion 期间捕获的屏幕截图附加/嵌入到 Cucumber 报告中?

java - 无法将屏幕截图添加到 Cucumber 中的范围报告

testing - 如何读取 cucumber 项目中的excel文件?

intellij-idea - 使用 IntelliJ 进行 DSM 分析

java - 如果任何场景失败,如何停止执行 Cucumber 功能

java - 从应用程序按钮运行 cucumber 测试文件

java - Windows 控制台中的重音符号