我想在游戏中使用参数化的JUnit测试!框架(1.2.5)申请。
这是我非常简单的测试示例:
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import play.test.FunctionalTest;
@RunWith(Parameterized.class)
public class ParameterizedExampleTest extends FunctionalTest {
private int i;
@Parameters
public static List<Object[]> parameters() {
return Arrays.asList(new Object[][] {{1},{2},{3}});
}
public ParameterizedExampleTest(int i) {
this.i = i;
}
@Test
public void someTest() {
System.out.println("i is " + i);
}
}
当我运行测试时,我得到一个IllegalArgumentException
告诉我“测试类只能有一个构造函数”。我完全同意这一点,因为FunctionalTest extends BaseTest
有一个@RunWith(PlayJUnitRunner.class)
注释而PlayJUnitRunner
有一个构造函数。
欢迎任何帮助!
答案 0 :(得分:1)
我找到了一个相当不错的解决方案:
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import play.test.FunctionalTest;
@RunWith(Parameterized.class)
public class ParameterizedExampleTest extends FunctionalTest {
@Parameter(0)
public int i;
@Parameters
public static List<Object[]> parameters() {
return Arrays.asList(new Object[][] {{1},{2},{3}});
}
@Test
public void someTest() {
System.out.println("i is " + i);
}
}
您必须使用@Parameter(...)
注释和参数数组中的参数编号来标记参数。不需要构造函数,因此它可以在游戏中顺利运行。
缺点:你需要JUnit 4.11,因为4.10中没有实现这个功能,这就是play(1.2.5)所带来的。