我在使用 JUnit 4 TestsUites 和参数化测试时遇到了一些麻烦。
在我的套件中,我想像这样设置 SystemProperty:
@RunWith(Suite.class)
@SuiteClasses({ParameterizedTestCase.class })
public class TestSuite {
@BeforeClass
public static void setUpSuite() {
System.out.println("suite");
System.setProperty("propertyToSet", "propertyToSet");
}
}
在 ParameterizedTestCase 我声明了 generateParams() 来打印属性,如下所示:
@RunWith(Parameterized.class)
public class ParameterizedTestCase{
@Parameters
public static Collection<Object[]> generateParams() {
System.out.println("Parameter: " + System.getProperty("propertyToSet"));
}
@Test
public void testSomething() {
//doSometing
}
}
我得到的输出如下:
Parameter: null
suite
所以方法以错误的顺序被调用。我想,套件的 BeforeClass 在所有 TestClasses 之前被调用。
我该如何解决这个问题。我需要在套件中设置一个参数,它将被多个测试用例使用。但是 TestCases 不知道它们是从哪个套件调用的。所以我更喜欢 Systemproperty 之类的东西。
感谢您的帮助
基尔施米歇尔