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;
}
}
は今、私はテストケースを実行したときに、それは期待できないものです
Other test: First parameter :: adding false
Other test: Second parameter :: adding false
を印刷します(驚く)@BeforeClass方法でtrueに変数「initializeThis」を初期化するが、しています。
私の質問は、 @parametersの前に@beforeclassメソッドを実行する方法はありますか?これはjunit 4で行うことができますか?
おそらく後で – Kirby