【问题标题】:Scala Test: Auto-skip tests that exceed timeoutScala 测试:超过超时的自动跳过测试
【发布时间】:2014-11-10 23:58:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: scala scalatest


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-07
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        相关资源
        最近更新 更多