私はBeforeAndAfter
を実装するテストスイートを持っています。テストが失敗した場合、私のafter()
メソッドをチェックすることができれば理想的です。これを行う組み込みの方法がありますか?Scala after()メソッドでテストが失敗したかどうかを知る方法はありますか?
ps。私は試してみることができることを知っている/テスト全体をキャッチが、私はむしろそれを行う必要はないだろう。
私はBeforeAndAfter
を実装するテストスイートを持っています。テストが失敗した場合、私のafter()
メソッドをチェックすることができれば理想的です。これを行う組み込みの方法がありますか?Scala after()メソッドでテストが失敗したかどうかを知る方法はありますか?
ps。私は試してみることができることを知っている/テスト全体をキャッチが、私はむしろそれを行う必要はないだろう。
私はafter()
でそれを行うことはできませんが、withFixture()
を上書きすることで可能です。あなたのニーズに応じて
class ExampleSpec extends WordSpec with MustMatchers {
"Example" must {
"work correctly" in {
3 must be(3)
}
"not fail" in {
true must be(false)
}
}
override def withFixture(test: NoArgTest) = super.withFixture(test) match {
case failed: Failed =>
val nameLen = test.name.length
info(s"The test '${test.name}' failed")
info(s"The test name is $nameLen characters long")
failed
case other => other
}
}
がSharing Fixturesを参照してください、特にセクション「オーバーライドwithFixture(NoArgTest)」
:この方法では、障害が発生した場合に結果と印刷何かを一致させることができ、その後、実際のテストを実行します、次のことができます。
1)def around[T](code: => T) = try {code} ...
のようなものを書いて、好き、それを使用します。
test("mytest") {
around {
}
}
it should "blabla" in around {
...
}
2)あなたが行う場合
def mytest[T](name: String)(code: =>T) = test(name){
try {
code
} ...
}
またはちょうどtest
をオーバーライドします:あなた自身を記述するだけで、その後の仕様を使用しない
override def test[T](name: String)(code: =>T) = super.test(name){
try {
code
} ...
}
の両方がところで、別の特性で行うことができます。それはalextscの答え
4)あなたは、ビルド
P.S.ですべてのテストを傍受したい場合は、独自のreporterを書く@説明したよう
3)withFixture
をオーバーライドBeforeAndAfter/withFixtureはリソースをクリーンアップするためのものです(そのため、例外へのアクセス権が与えられないためです)。エラーを分析して再現する必要がある場合は、論理的にレポーターソリューションが適していますが、あまり便利ではありません。
ありがとう、それはまさに私が探していたものです – annedroiid