【发布时间】:2014-06-23 20:16:46
【问题描述】:
考虑一个参数化的 JUnit 测试。 JUnit 提供了一种使用静态方法参数化此类测试的方法:
@Parameterized.Parameters
public static Collection<Object[]> parameters(){
Object[][] data = new Object[][] { { 1, 11 }, { 2, 22 }, { 3, 33 }, { 4, 44 } };
return Arrays.asList(data);
}
但是,这不是我需要的,因为我不知道测试类本身的参数。测试类应该只是一个可以用一组参数参数化的测试类。我不想在类本身中指定此类参数。考虑一下我的测试套件中有很多这样的类。
我希望能够从外部代码参数化整个测试套件。即,有一些其他代码可以用一组特定的参数来实例化套件。套件本身不知道参数化的参数。
例如,我有一个测试套件X,由测试类A、B 和C 组成。所有这些类都在其构造函数中使用例如字符串和整数作为参数。现在我希望能够在外部(例如,在另一个测试套件中)使用特定的字符串 s 和 int i 实例化 X 以便它将使用 @987654332 实例化 A B 和 C @ 和 i 在它们的构造函数中。
如何做到这一点?
【问题讨论】:
标签: java unit-testing junit parameterized-tests