Scala测试:自动跳过超时的测试

时间:2013-11-12 19:03:04

标签: scala scalatest

由于我有一组连接远程服务的scala测试(其中一些在测试执行时可能无法使用),我想有一种方法来指示应该忽略的Scala测试,如果超时超过了预期的阈值。

事实上,我可以在将来附上一个测试的主体并让它自动通过,如果超时超时但是慢慢地通过测试会让我觉得有风险。如果在测试运行期间明确跳过它会更好。所以,我真正想要的是以下内容:

 ignorePast(10 seconds) should "execute a service that is sometimes unavailable" in {
      invokeServiceThatIsSometimesUnavailable()
      ....
 }

查看ScalaTest文档,我没有看到直接支持此功能,但怀疑可能还有其他功能需要添加此功能?实际上,我可以在“慢”测试中添加一个“标记”并告诉跑步者不要执行它们,但我宁愿在超出超时时自动跳过测试。

2 个答案:

答案 0 :(得分:1)

我认为这不是你测试框架应该负责的事情。 将invokeServiceThatIsSometimesUnavailable()包装在异常处理块中,你会没事的。

try {
  invokeServiceThatIsSometimesUnavailable()
} catch {
  case e : YourServiceTimeoutException => reportTheIgnoredTest()
}

答案 1 :(得分:0)

我同意Maciej异常可能是最好的方法,因为超时发生在你的测试中。

还有assume(参见here),如果某些先决条件失败,则允许取消测试。我认为你也可以在一次测试中使用它。