我正在使用Spock进行groovy测试,我希望自定义测试规则失败。首先,我使用现在已弃用的MethodRule。所以我尝试了TestWacher,但Spock在我的规则可以缓存它之前缓存异常。
public class SimpleOnFailed extends TestWatcher {
@Override
protected void failed(Throwable e, Description description) {
print "Prints when test fails"
}
}
并且它永远不会从失败的方法打印我的print语句。
答案 0 :(得分:3)
Spock存在一个已知问题,而TestRule
抛出的异常并不容易解决,因为Spock的语义在这方面与JUnit不同。 (如果您对详细信息感兴趣,可以在http://forum.spockframework.org了解更多信息。)解决方案是使用MethodRule
代替(在最新的JUnit中不再弃用)或编写Spock扩展名。后者尚未被认为是一个稳定的SPI,但是如果您可以接受潜在的变化,请查看Spock代码库中的扩展(http://github.spockframework.org)。