为spock创建自定义测试规则

时间:2013-07-19 05:43:38

标签: junit spock

我正在使用Spock进行groovy测试,我希望自定义测试规则失败。首先,我使用现在已弃用的MethodRule。所以我尝试了TestWacher,但Spock在我的规则可以缓存它之前缓存异常。

    public class SimpleOnFailed extends TestWatcher {

    @Override
    protected void failed(Throwable e, Description description) {
        print "Prints when test fails"
    }

}

并且它永远不会从失败的方法打印我的print语句。

1 个答案:

答案 0 :(得分:3)

Spock存在一个已知问题,而TestRule抛出的异常并不容易解决,因为Spock的语义在这方面与JUnit不同。 (如果您对详细信息感兴趣,可以在http://forum.spockframework.org了解更多信息。)解决方案是使用MethodRule代替(在最新的JUnit中不再弃用)或编写Spock扩展名。后者尚未被认为是一个稳定的SPI,但是如果您可以接受潜在的变化,请查看Spock代码库中的扩展(http://github.spockframework.org)。