为什么在IntelliJ中运行测试用例时,JUnit Jupiter和JUnit Vintage被分开了?

29
我看到JUnit5已经发布,我在IntelliJ V2016.2.1中应用它并运行了一些测试用例,如下屏幕截图所示。我有两个问题:
1.当我在IntelliJ中运行测试用例时,为什么JUnit Jupiter和JUnit Vintage被分开? 2.我能否合并JUnit 4和5的测试结果?

您可以删除JUnit Vintage的结果。请参见下面的答案。 - Arefe
2个回答

35

JUnit 5不只是一个被称为JUnit Jupiter的新API,它还包含一个用于运行JUnit测试工具的抽象层(称为JUnit Platform)。该平台对JUnit 4、Jupiter或实际上任何其他内容都没有了解。它只知道测试引擎,这些引擎将执行它们编写的测试。

(您可以在用户指南或我撰写的一篇关于JUnit 5架构的文章中了解更多信息。)

  1. 在IntelliJ中运行TestCase时,为什么JUnit Jupiter和JUnit Vintage会被分开?

您所看到的是启动器执行两个引擎,一个是用于新API(Jupiter),另一个是用于JUnit 4(Vintage)的引擎。每个引擎代表其自己运行的测试在其自己的数据结构中,IntelliJ显示为您看到的树。

  1. 我能合并JUnit 4和5的测试结果吗?

这将必须是一个IDE功能,据我所知,目前并未实现。


15

如果你在类的顶部使用了注解@RunWith(SpringRunner.class),那么你可以删除它,程序仍能正常运行。这是在注解之前的错误截图 - 显示Junit Vintage失败。

输入图片说明

这是我删除注解后的截图:

输入图片说明


在您的第二个截图中,我仍然看到注释 - @RunWith(SpringRunner.class)。是什么改变使得老式测试错误消失了? - Shankar
可能截图缺少实际的表示,但它按照解决方案工作。 - sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接