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 に答える