以编程方式跳过Spock中的测试

时间:2015-11-20 04:17:46

标签: spock

如何以编程方式跳过Spock框架中的测试?我知道我可以annotate a test with @Ignore跳过它,或者使用<html> <head> ... // if $script is defined, include it <?php if( isset($script) ){ echo $script; } ?> </head> 跳过基于环境变量等的测试。但有没有办法运行任意代码来决定是否应该运行测试?

例如,假设我有一个必须连接到第三方服务的沙箱环境的集成测试。服务的沙箱环境中断导致测试失败。假设我编写了一个方法@IgnoreIf,用于检查测试是否能够连接到此服务,如果canConnectToService返回false,如何编写将跳过的测试?

1 个答案:

答案 0 :(得分:8)

使用JUnit&#39; Assume class。具体来说,如果第三方服务不可用,您可以在测试开始时编写Assume.assumeTrue(canConnectToService())以跳过测试。如果AssumptionViolatedException返回false,则此方法将抛出canConnectToService(),Spock会忽略由AssumptionViolatedException中断的JUnit兼容性测试(请参阅this bug report)。