java是否可以使测试方法参数化,而不是整个类?
据我所知,JUnit4。x及其注释org.junit.runners.Parameterized
我可以使我的单元测试“参数化”,这意味着对于提供的每一组参数,整个单元测试将从头开始重新执行
这种方法限制了我,因为我无法创建“参数化方法”,例如:
..
@Test
public void testValid(Integer salary) {
Employee e = new Employee();
e.setSalary(salary);
assertEqual(salary, e.getSalary());
}
@Test(expected=EmployeeInvalidSalaryException.class)
public void testInvalid(Integer salary) {
Employee e = new Employee();
e.setSalary(salary);
}
..
如示例所示,我需要在一个单元测试中收集两组参数。在JUnit4中可以这样做吗。十、例如,在PHPUnit中是可能的
也许可以在其他单元测试框架中实现这种机制,而不是在JUnit中
# 1 楼答案
简单的解决方法(我认为这超出了这个问题的范围)是将它们分成两个单独的参数化测试
如果您倾向于将它们放在一起,那么将额外的元素添加到参数化的参数集中就可以了。该元素应指示给定参数是用于一个测试还是另一个测试(或者如果需要,用于两个测试)
JUnit参数化测试服务于类,而不是方法,因此将其分解会更好
# 2 楼答案
是的,有可能。最近我开始了zohhak项目。它可以让你写:
# 3 楼答案
另一种选择是使用JCheck或QuickCheck for Java