JUnit @Rule将参数传递给测试
2022-09-04 20:46:09
正如IAdapter所说,你不能使用规则传递参数,但你可以做类似的事情。
实现一个规则,该规则保存所有参数值,并为每个参数值评估测试一次,并通过方法提供这些值,以便测试可以从规则中提取它们。
考虑这样的规则(伪代码):
public class ParameterRule implements MethodRule{
private int parameterIndex = 0;
private List<String> parameters;
public ParameterRule(List<String> someParameters){
parameters = someParameters;
}
public String getParameter(){
return parameters.get(parameterIndex);
}
public Statement apply(Statement st, ...){
return new Statement{
public void evaluate(){
for (int i = 0; i < parameters.size(); i++){
int parameterIndex = i;
st.evaluate()
}
}
}
}
}
您应该能够在这样的测试中使用它:
public classs SomeTest{
@Rule ParameterRule rule = new ParameterRule(ArrayList<String>("a","b","c"));
public void someTest(){
String s = rule.getParameter()
// do some test based on s
}
}