已经提出了类似的问题here。
一个(未接受的)answer州:
测试类将始终直接启动,然后通过 "连结"在套房里。这是预期的。
有人可以解释这实际意味着什么以及是否可以阻止测试运行两次。
当我使用mvn test
从命令行运行测试时,它们只运行一次。
更新
我有一个测试套件定义如下:
@RunWith(Suite.class)
@SuiteClasses({ TestCase1.class, TestCase2.class })
public class MyTestSuite
{
}
答案 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
相同仅排除单个测试用例,并包括套件测试用例。