我使用junit 4的“参数化”功能,并且我注意到@parameters方法在@beforeclass方法之前执行。这对我造成了一个问题,因为我通过@parameters传递给测试用例的参数取决于@beforeclass方法中的代码初始化。例如@parameters方法在@beforeclass方法执行之前执行
@RunWith(Parameterized.class)
public class TestOtherClass {
String argument;
private static boolean initializeThis;
public TestOtherClass(String parameter) throws Exception {
argument=parameter;
}
@BeforeClass
public static void doSetup() {
System.out.println("Doing setup before class...");
initializeThis=true; // true or false, based on some condition
}
@Test
public void otherTest() {
System.out.println("Other test: " + argument);
}
@Parameters
public static Collection<Object[]> getData(){
System.out.println("Inside parameter");
String addThis;
if(initializeThis)
addThis="adding true";
else
addThis="adding false";
Object[] para1 = new Object[]{"First parameter :: " + addThis};
Object[] para2 = new Object[]{"Second parameter :: " + addThis};
Collection<Object[]> classNames = new ArrayList<Object[]>();
classNames.add(para1);
classNames.add(para2);
return classNames;
}
}
现在,我初始化变量“initializeThis”为true @BeforeClass方法,但(奇怪),当我执行的测试情况下,打印
Other test: First parameter :: adding false
Other test: Second parameter :: adding false
这东西不期望。
我的问题是;有没有办法在@parameters之前执行@beforeclass方法,我们可以在junit 4中执行此操作吗?
也许通过供应商功能以后可以检索的字段 – Kirby 2017-08-15 20:22:40