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

时间:2016-01-11 11:45:05

标签: java eclipse maven junit

已经提出了类似的问题here

一个(未接受的)answer州:

  

测试类将始终直接启动,然后通过   "连结"在套房里。这是预期的。

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

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

更新

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

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

3 个答案:

答案 0 :(得分:4)

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

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

{{1}}

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

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

答案 1 :(得分:0)

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

我认为是这样的想法,但最重要的是结果是 正! :) 此致!

答案 2 :(得分:0)

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

相同

仅排除单个测试用例,并包括套件测试用例。

相关问题