Java 让JUnitRunner使用不同的参数多次运行测试类
我有一些jUnit4测试类,我想用注释中传递的不同参数运行多次。例如,像这样:Java 让JUnitRunner使用不同的参数多次运行测试类,java,unit-testing,junit4,Java,Unit Testing,Junit4,我有一些jUnit4测试类,我想用注释中传递的不同参数运行多次。例如,像这样: @RunWith(MyClassRunner.class) @Params("paramFor1stRun", "paramFor2ndRun") class MyTest { @Test public void doTest() {..} } 我想Runner可以帮我,但我不知道如何实现。你能给我一些建议吗 您需要将注释@RunWith(Parameterized.class)添加到测试中 然后,使用所需
@RunWith(MyClassRunner.class)
@Params("paramFor1stRun", "paramFor2ndRun")
class MyTest {
@Test
public void doTest() {..}
}
我想Runner可以帮我,但我不知道如何实现。你能给我一些建议吗
@RunWith(Parameterized.class)
添加到测试中public Test(String pParam1, String param2) {
this.param1 = pParam1;
this.param2 = pParam2;
}
如果使用注释
@Parameter(value=N)
其中N是参数数组的索引,则无需定义构造函数即可获得更快的方法。是否有方法以不同的名称运行这些测试?我的意思是,在Jenkins中,我需要观察这些类的运行:MyTest.doTest[paramsforstrun],MyTest.doTest[paramsforndrun]这个线程是否回答了您的问题。它似乎从JUnit4.11开始就存在了。谢谢,我决定创建自己的测试运行程序,但是参数化的运行程序帮助我理解了很多。也许我将来会使用它来管理我的测试。这是JUnit不是现实生活框架的又一个很好的证明。简单地初始化两个数组并在循环中调用它们比post建议的方式更简单方便。通过数组,您可以对任何测试函数执行此操作,而不是为其创建单独的测试类。或者使用TestNG。当然,我的评论并不反对post-+1-我尊重那些即使是JUnit也能做好工作的人。(就我个人而言,我总是写不同的跑步者)除了给出答案之外,你可能还想看看这个:
@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);
}