我有一些jUnit4测试类,我希望使用注释中传递的不同参数运行多次。例如,像这样:使用不同的参数多次执行jUnit runner运行测试类
@RunWith(MyClassRunner.class)
@Params("paramFor1stRun", "paramFor2ndRun")
class MyTest {
@Test
public void doTest() {..}
}
我认为亚军可以帮助我,但我不知道如何实现这一点。你可以建议吗?
我有一些jUnit4测试类,我希望使用注释中传递的不同参数运行多次。例如,像这样:使用不同的参数多次执行jUnit runner运行测试类
@RunWith(MyClassRunner.class)
@Params("paramFor1stRun", "paramFor2ndRun")
class MyTest {
@Test
public void doTest() {..}
}
我认为亚军可以帮助我,但我不知道如何实现这一点。你可以建议吗?
@RunWith(Parameterized.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是您参数数组的索引,那么您没有定义构造函数就有了更快的方法。
有没有办法在不同的名字下运行这些测试?我的意思是,在Jenkins中,我需要观察这些类的运行:MyTest.doTest [paramsFor1stRun],MyTest.doTest [paramsFor2ndRun] – awfun
此线程是否回答您的问题? http://stackoverflow.com/questions/650894/changing-names-of-parameterized-tests。从JUnit 4.11开始,它似乎已经存在。 – Akah
谢谢你,我决定创建自己的测试跑步者,但参数化跑步者帮助我理解了很多。也许我会在将来使用它来管理我的测试 – awfun
除了给出的答案,你可能也想看看这个:https://github.com/EaseTech/easytest-core – SiKing