ユニットテストクラスは次のとおりです。
MyUnitTestSetup myUnitTestSetup ;
public void setUp(String myParam){
myUnitTestSetup = new MyUnitTestSetup(myParam);
}
@Test
public void test1(){
setUp("value1");
//do some stuff with myParam = "value1";
}
@Test
public void test2(){
setUp("value2");
//do some stuff with myParam = "value2";
}
「value1」でtest1を、「value2」でtest2を実行したい。パラメータ化された単体テストは、「value1」と「value2」に対してtest1を実行し、「value1」と「value2」に対してtest2を実行するため、便利ではありません。
私は約:
- テストを行うたびに setup メソッドを呼び出します。
@Rule アノテーションを使用:
static String myParam; MyUnitTestSetup myUnitTestSetup ; @Before public void setUp(){ myUnitTestSetup = new MyUnitTestSetup(myParam); } @Rule public TestRule rule = new TestRule() { @Override public Statement apply(final Statement base, final Description desc) { return new Statement() { @Override public void evaluate() throws Throwable { if(desc.getMethodName().equals("test1")) myParam = "value1"; ... } }; } } @Test public void test1(){ //do some stuff with myParam = "value1"; } @Test public void test2(){ //do some stuff with myParam = "value2"; }
しかし、これを行うためのよりクリーンでスマートな方法があるかどうか疑問に思っています。私は次のようなことを考えていたでしょう:
MyUnitTestSetup myUnitTestSetup ;
@Before
public void setUp(String myParam){
myUnitTestSetup = new MyUnitTestSetup(myParam);
}
@Test(myParam="value1")
public void test1(){
//do some stuff with myParam = "value1";
}
@Test(myParam="value2")
public void test2(){
//do some stuff with myParam = "value2";
}
何か案が ?