这里JUnit测试是一个单元测试类:与参数化方法
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”和TEST2用“VALUE2”执行TEST1。参数化单元测试是不是方便,因为它们将执行测试1的“值1”和“值2”和TEST2的“值1”和“值2这是不是我想要的
我虽然约:
- 通话使用@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";
}
有什么想法吗?
我写了一个库名为参数化,除其他事情,让你用'@ OnlyIf'或'@ OnlyIfNot'注释测试做到这一点。不幸的是,我从来没有得到记录的东西......但随时去看看:https://code.launchpad.net/namedparameterizedrunner – yshavit 2012-08-16 18:48:36
可能是这会帮助你http://netbeans.dzone.com/articles/junit-little-beyond-test-after?page = 0, – 2012-08-16 18:53:31