2011-08-17 7 views
5

タイトルごとに、特定のテストケースを定義するときにScalatestに「前提条件」を提供できるかどうか疑問に思っています。この文脈における前提条件は、仮説が偽であると評価された場合、テストは実行されるのではなくスキップされる(したがってランナーによって適切に処理される)ように、テストの前提条件となる。Scalatestは前提条件をサポートしていますか?

この特定のケースでは、私はテスト間の依存関係を考えている - ので、この方法は、レスポンスの詳細にドリルダウン後のテストに続いて、すべてので何を返すかどうかを検証する基本的なテストがあるかもしれません。前者のテストが失敗した場合、後者のテストでは、「実行不可能」と表示されることになります。

これは、未接続の前提条件(ハードドライブに少なくとも20MBの空き容量がなければならないなど)を定義するために将来これを使用すると想像できると言われています。したがって、実行時にテストをスキップする一般的な方法があるignoreまたはpendingを使用してください)私はそれを聞きたいです。

手動で特定の種類の例外をスローする必要がある場合でも、特殊な構文は歓迎ですが、それもOKです。しばしばscalatestと組み合わせて使用​​されて

+0

報告?無視され、保留中、成功、失敗として? –

+0

私はこれも好きです。ユース・ケースでは、データベースにテスト項目を取り込みます。それが失敗した場合、データベースから読み取っているテスト(すべてではない)を実行しないでください。私は彼らを「無視された」と報告したいと思う。 – akauppi

答えて

5

ScalaTestは仮定のサポートを追加しました:

形質アサーションはまた、あなたがテストをキャンセルするためのメソッドを提供します。テストで必要なリソースが利用できなかった場合は、テストをキャンセルします。たとえば、テストで外部データベースをオンラインにする必要があり、そうでない場合は、テストがキャンセルされてデータベースの不足により実行できなかったことを示します。このような試験では、データベースが使用可能であると仮定し、そしてあなたは、このように、テストの開始時にこのことを示すために仮定法を使用することができます:あなたがテストになりたいどうすればよい

assume(database.isAvailable) 

http://www.scalatest.org/user_guide/using_assertions

+0

imho、これは正解でなければなりません – akauppi

+0

@akauppi私は同意します。今はそうです。 :) –

1

Scalacheckは、それを行うことができます。

import org.scalacheck._ 

object XSpecifictaion extends Properties ("X") { 

    property ("sample (a - b)") = Prop.forAll { (a: Int, b: Int) => 
     (a < b || (a - b >= 0)) } 
} 

! (< b)はあなたの仮定であり、(a-b> 0)実際のテストです。前提が真実なら後者のみを実行するので、仮定を否定してショートカットORと組み合わせることになります。 (と思う)2.0