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 文档以了解其他选项。