使用不同的参数使 jUnit 运行ner 运行 测试 class 多次
Make jUnit runner run test class multiple times with different parameters
我有一些 jUnit4 测试 类,我想 运行 多次使用在注释中传递的不同参数。例如,像这样:
@RunWith(MyClassRunner.class)
@Params("paramFor1stRun", "paramFor2ndRun")
class MyTest {
@Test
public void doTest() {..}
}
我想 Runner 可以帮助我,但我不知道如何实现它。能请教一下吗?
您需要将注释 @RunWith(Parameterized.class)
添加到您的测试中。
然后,用你需要的参数为你创建一个构造函数class:
public Test(String pParam1, String param2) {
this.param1 = pParam1;
this.param2 = pParam2;
}
然后,声明一个这样的方法(提供构造函数对应的参数数组):
@Parameters
public static Collection<Object[]> data() {
Object[][] data = {{"p11", "p12"}, {"p21", "p22"}};
return Arrays.asList(data);
}
你可以做你的测试,这将对你的数组的每一行执行:
@Test
public void myTest() {
assertEquals(this.param1,this.param2);
}
如果您使用注解 @Parameter(value = N)
,则无需定义构造函数即可获得更快的方法,其中 N 是参数数组的索引。
我有一些 jUnit4 测试 类,我想 运行 多次使用在注释中传递的不同参数。例如,像这样:
@RunWith(MyClassRunner.class)
@Params("paramFor1stRun", "paramFor2ndRun")
class MyTest {
@Test
public void doTest() {..}
}
我想 Runner 可以帮助我,但我不知道如何实现它。能请教一下吗?
您需要将注释
@RunWith(Parameterized.class)
添加到您的测试中。然后,用你需要的参数为你创建一个构造函数class:
public Test(String pParam1, String param2) { this.param1 = pParam1; this.param2 = pParam2; }
然后,声明一个这样的方法(提供构造函数对应的参数数组):
@Parameters public static Collection<Object[]> data() { Object[][] data = {{"p11", "p12"}, {"p21", "p22"}}; return Arrays.asList(data); }
你可以做你的测试,这将对你的数组的每一行执行:
@Test public void myTest() { assertEquals(this.param1,this.param2); }
如果您使用注解 @Parameter(value = N)
,则无需定义构造函数即可获得更快的方法,其中 N 是参数数组的索引。