这就是我在groovy中进行单元测试的方式。
public void testSomeMethod() {
doSomething(1,2,3,4); //this is first test
doSomething(11,22,33,44); //this is second test
}
private void doSomething(a, b, c, d) {
assertEquals(a, actual)
}
基本上我在同一测试下用不同的值调用doSomething 2次。 它可能不是一个好的测试方法,但我只想尝试一下。
所以问题是,如果第一次测试失败,第二次测试就不会被执行。
有没有办法可以强制它打印失败消息并转到下一个?
答案 0 :(得分:8)
现在是您使用spock的好时机,您可以在那里进行数据驱动测试,而第二次测试不会被第一次测试封闭。您可以获得更多的灵活性,例如您要求的更多灵活性。
最终,测试看起来像:
void "test something"(){
when:
def result = doSomething(a, b, c, d)
then:
result == expectedResult
where:
a | b | c | d || expectedResult
1 | 2 | 3 | 4 || 100
11 | 22 | 33 | 44 || 1000
}
private doSomething(a, b, c, d){...}
您可以在spock框架文档中找到更多详细信息和/或查看these questions。
BTW,上面的测试示例可以过度简化,以使其更加流畅。 ;)void "test something"(){
expect:
result == doSomething(a, b, c, d)
where:
a | b | c | d || result
1 | 2 | 3 | 4 || 100
11 | 22 | 33 | 44 || 1000
}
答案 1 :(得分:1)
虽然我同意使用Spock(优秀框架)的建议,但如果您不想包含其他依赖项,也可以使用JUnit parameterized tests。