3

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

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

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

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

4

2 回答 2

1

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

try {
  invokeServiceThatIsSometimesUnavailable()
} catch {
  case e : YourServiceTimeoutException => reportTheIgnoredTest()
}
于 2014-03-24T16:10:58.250 回答
0

我同意Maciej的观点,即异常可能是最好的方法,因为超时发生在您的测试本身中。

还有assume(参见此处),如果某些先决条件失败,它允许取消测试。我认为,您也可以在单个测试中使用它。

于 2014-11-10T15:58:06.110 回答