2016-11-22 8 views
2

私はBeforeAndAfterを実装するテストスイートを持っています。テストが失敗した場合、私のafter()メソッドをチェックすることができれば理想的です。これを行う組み込みの方法がありますか?Scala after()メソッドでテストが失敗したかどうかを知る方法はありますか?

ps。私は試してみることができることを知っている/テスト全体をキャッチが、私はむしろそれを行う必要はないだろう。

答えて

4

私は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)」

+0

ありがとう、それはまさに私が探していたものです – annedroiid

1

:この方法では、障害が発生した場合に結果と印刷何かを一致させることができ、その後、実際のテストを実行します、次のことができます。

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はリソースをクリーンアップするためのものです(そのため、例外へのアクセス権が与えられないためです)。エラーを分析して再現する必要がある場合は、論理的にレポーターソリューションが適していますが、あまり便利ではありません。