为什么JUnit测试在Eclipse中运行两次?

这里已经提出了类似的问题。

一个(未接受的) 答案指出:

测试类将始终直接启动,然后通过套件中的“链接”启动。 这是预期的。

有人可以解释这实际意味着什么,以及是否有可能阻止测试运行两次。

当我使用mvn test从命令行运行mvn test它们只运行一次。

UPDATE

我有一个测试套件定义如下:

 @RunWith(Suite.class) @SuiteClasses({ TestCase1.class, TestCase2.class }) public class MyTestSuite { } 

当您在项目级别(或包级别)上运行Eclipse中的测试时,Eclipse会在所有项目的源文件夹中搜索JUnit类(或选定的包)。 这些都是带有@Test注释的类和带有@RunWith所有类(可能还有一些)。 然后对于所有这些类,它将它们作为测试运行。

由于此行为,如果您有一个套件类,它引用同一项目中的测试类,则这些测试将运行两次。 如果你有另一个同样的套件,他们将运行三次,依此类推。 要了解此行为,请尝试运行包含两个测试用例的套件,例如:

 @RunWith(Suite.class) @SuiteClasses({ TestCase1.class, TestCase1.class }) public class TestSuite {} 

这里接受的策略是为项目定义一个或多个套件,专门运行它们。 不要在项目级别启动测试,而只运行选定的套件。

就Maven而言,我怀疑它的默认配置只选择套件类并省略测试用例。 如果配置不同,它的行为与Eclipse相同。

Elipse测试2个类,给你2个结果。 Maven测试2个类,给你一个结果,有2个子结果。

我认为是这样的想法,但最重要的是结果是积极的! :) 问候!

与此问题相同https://github.com/spring-projects/spring-boot/issues/13750

只需排除单个测试用例并包含套件测试用例。