Java 如何编写@Parameters方法来使用另一个类的参数列表?

Java 如何编写@Parameters方法来使用另一个类的参数列表?,java,junit,parameterized,Java,Junit,Parameterized,我试图在Junit中运行一些参数化测试。我的测试只有一个参数,所以我可以这样做: @Parameters public static Collection<Object[]> data() { return Arrays.asList( new Object [][] { {new TestCase("AD", "sikuli", l)}}); } 通过这种方式,我可以用不同的TestCase对象运行相同的测试。问题是我想从另一个类接收TestCase的Ar

我试图在Junit中运行一些参数化测试。我的测试只有一个参数,所以我可以这样做:

@Parameters
public static Collection<Object[]> data() {
return Arrays.asList( new Object [][] {
            {new TestCase("AD", "sikuli", l)}});
}

通过这种方式,我可以用不同的TestCase对象运行相同的测试。问题是我想从另一个类接收TestCase的ArrayList,我不想在这里创建TestCase对象。有什么方法可以做到这一点吗?

您可以使用所需的测试用例集定义一个接口:

public interface MyTestCases {

    public Collection<Object[]> TESTCASE_SET_1 = Arrays.asList(
                   new Object[][] {{new TestCase("AD", "sikuli", l)}}); 

    // maybe followed by other sets of test cases
}
在这里,您只需返回接口中定义的集合

@Parameters
public static Collection<Object[]> data() {
    return MyTestCases.TESTCASE_SET_1;
}

希望这会有所帮助。

在下面的示例中,用对另一个返回TestCase对象的类的调用替换getTestCaseList:

@Parameters
public static Collection<Object[]> data() {
  Collection<Object[]> result = new ArrayList<>();

  for (TestCase testCase : getTestCaseList()) {
    result.add(new Object[] {testCase});
  }

  return result;
}