如何解决IntelliJ 中的 JUnit + Cucumber - 查看步骤
我有一个 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 计划在所有钩子之前和之后。
,在对这个主题进行一些研究后,我发现大部分 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 文档以了解其他选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。