基本问题是,当我将JUnit测试分组到套件或套件中时,所有测试的@Parameters
方法首先在单个套件或测试执行之前运行。我们的设置如下:
我们有多个测试类文件,每个文件都有静态内部类和实际测试。
@RunWith(Suite.class)
@SuiteClasses({
SubTestSuite01.TestSet01.class,
SubTestSuite01.TestSet02.class})
public class SubTestSuite01 {
public static class TestSet01{
public TestSet01(){}
@Parameters public static Collection<Object[]> data(){}
@Test public void test01(){}
@Test public void test02(){}
}
public static class TestSet02{
public TestSet02(){}
@Parameters public static Collection<Object[]> data(){}
@Test public void test01(){}
@Test public void test02(){}
}
}
以及SubTestSuite02
,SubTestSuite03
等等。现在,为了将所有这些测试套件收集到更大的集合中,我创建了一个更大的测试套件,如下所示:
@RunWith(Suite.class)
@SuiteClasses({SubTestSuite01.class, SubTestSuite02.class,SubTestSuite03.class})
public class AllTests{}
但是,无论我是运行AllTests
主套件还是SubTestSuite
,我都会在整个套件中首先调用所有内部类的@Parameters
方法/任何@BeforeClass
方法或实际测试方法之前的套件。
我的问题是:
这是预期的行为吗?
如何让它运行,以便各个内部类的@Parameters
方法在它自己的测试执行之前运行,而不是在套件的开头一起运行?
根据当前的行为,我冒着快速压倒我的系统资源的风险,因为各种各样的东西都被加载在一起。
答案 0 :(得分:0)
@Parameterized 将始终首先运行,甚至在 @BeforeClass
之前您不必为测试使用静态类和内部类,我会使用类来进行类似的测试,并使用@Cetegories来选择组