如何编写使用其他类参数列表的@Parameters方法?

时间:2014-10-15 08:15:38

标签: java junit parameterized

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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;
}

希望有所帮助。

答案 1 :(得分:0)

在下面的示例中,将getTestCaseList()替换为调用返回TestCase个对象的其他类:

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

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

  return result;
}