我会使用一种generateData()
生成所有五百个元素的方法。另外,我会添加一个getParameters()
用@Parameters
. 它可以调用generateData()
以获取完整的集合,然后加载日志文件(如果存在)并将集合减少到失败的测试参数。如果不存在日志文件,它将返回整个集合。您可能需要显式命名参数才能识别它们,因为 JUnit 不能保证以相同的顺序重新运行测试/测试参数(请参阅更改参数化测试的名称)。
@RunWith(Parameterized.class)
public class Tests {
@Parameters
public static Collection<Object[]> getParameters() {
List<Object[]> parameters = generateData();
return filterParameters(parameters);
}
private static Collection<Object[]> filterParameters(Collection<Object[]> params) {
// load a file to exclude successful tests
// ...
}
private static Collection<Object[]> generateData() {
return new ArrayList<Object[]>();
}
}
另一种方法可能是在方法中使用Scanner
with ,以便您可以使用控制台中的用户输入来选择参数。但是,如果您想在持续集成中使用它们,您将需要以某种方式确保在没有用户交互的情况下仍然可以运行测试。System.in
@Parameters