使用不同的参数使 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 可以帮助我,但我不知道如何实现它。能请教一下吗?

  1. 您需要将注释 @RunWith(Parameterized.class) 添加到您的测试中。

  2. 然后,用你需要的参数为你创建一个构造函数class:

    public Test(String pParam1, String param2) {
        this.param1 = pParam1;
        this.param2 = pParam2;
    }
    
  3. 然后,声明一个这样的方法(提供构造函数对应的参数数组):

    @Parameters
    public static Collection<Object[]> data() {
      Object[][] data = {{"p11", "p12"}, {"p21", "p22"}};
      return Arrays.asList(data);
    }
    
  4. 你可以做你的测试,这将对你的数组的每一行执行:

    @Test
    public void myTest() {  
        assertEquals(this.param1,this.param2);
    }
    

如果您使用注解 @Parameter(value = N),则无需定义构造函数即可获得更快的方法,其中 N 是参数数组的索引。