java - 使用 Junit 5 Jupiter 运行 JBehave
问题描述
我正在尝试在 JUnit 5 上运行一些基于 JUnit 4 的 JBehave 测试。在我的项目中,我有一个适用于所有故事的测试类JBehaveTest
。
当我将它作为 JUnit 5 测试运行时,JUnit 看不到任何测试。我将@Test
注释修改为它们的 Jupiter 等效项,我将assertTrue
and更改assertFalse
为它们的等效项,等等。
JUnit 4 测试使用注解进行注解,如果我理解正确的话@RunWith
,在 JUnit 5 中应该是注解。@ExtendWith
不幸JBehave
的是,它不是 JUnit 5 扩展,因此无法编译。
JBehave 可以与 JUnit 5 一起使用,如果可以,如何使用?
@RunWith(AnnotatedEmbedderRunner.class)
@UsingEmbedder(embedder = Embedder.class, verboseFailures = true, ignoreFailureInStories = false, generateViewAfterStories = true)
public class JBehaveTest implements Embeddable {
private Embedder embedder;
private DotStoryReporter dot = new DotStoryReporter();
private Stage primaryStage;
@Before
public void createStage() throws TimeoutException {
Locale locale = new Locale("fa", "IR");
Locale.setDefault(locale);
primaryStage = FxToolkit.registerPrimaryStage();
}
@Override
@Test
public void run() throws Throwable {
embedder.runStoriesAsPaths(new StoryFinder().findPaths("src/test/resources", Collections.singletonList("**/*.story"), Collections.<String>emptyList()));
}
@Override
public void useEmbedder(Embedder embedder) {
this.embedder = embedder;
MostUsefulConfiguration configuration = new MostUsefulConfiguration();
Steps steps = new Steps();
configuration.useStoryReporterBuilder(
new StoryReporterBuilder()
.withCodeLocation(CodeLocations.codeLocationFromClass(JBehaveTest.class))
.withDefaultFormats()
.withReporters(dot, new MyStoryReporter(new File("test"), steps))
.withFormats(Format.HTML, Format.TXT)
.withFailureTrace(true)
.withFailureTraceCompression(false));
configuration.useStepdocReporter(new DetailedStepReporter());
embedder.useStepsFactory(new InstanceStepsFactory(configuration, steps));
embedder.useConfiguration(configuration);
}
Gradle 测试依赖项是:
testCompile 'org.junit.jupiter:junit-jupiter-api:5.2.0'
testCompile 'org.mockito:mockito-core:2.18.3'
testRuntime 'org.junit.jupiter:junit-jupiter-engine:5.2.0'
testRuntime 'org.junit.platform:junit-platform-launcher:1.2.0'
testCompile 'org.testfx:testfx-core:4.0.+'
testCompile 'org.testfx:testfx-junit5:4.0.+'
testCompile 'org.jbehave:jbehave-core:4.3.2'
testCompile 'de.codecentric:jbehave-junit-runner:1.2.0'
解决方案
推荐阅读
- python - 当我尝试求解方程时,python 只使用整数
- yaml - 从 yaml 文件中转义空格逗号双引号
- javascript - 空 css-grid 单元格下的元素不响应鼠标事件
- discord - discord.py-rewrite:“AttributeError:模块'music'没有属性'setup'”加载cog时
- mips - 如何读取和打印整数?
- angularjs - 如何使用 done() 和 catch() 回调模拟在 angularjs 中返回承诺的服务
- javascript - Adobe Sign JS SDK
- amazon-web-services - 如何为并行开发设置云开发设置?
- python - 使用多个子元素最有效的方法是什么?
- git - 如果我在分支“Foo2”并执行“git push origin Foo”,会发生什么?