可能重复:
@parameters method is executed before @beforeclass method
我在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使用。但TestCase不知道从哪个套件调用它们。所以我更喜欢像Systemproperty这样的东西。
感谢您的帮助
Kirschmichel