2017-05-22 9 views
1

テストとしても存在する必要なセットアップが失敗した場合、テストが「不合理」となる方法を理解しようとしています。NUnitは別のテストを後のテストのための 'セットアップ'として使用します

これは私がやろうとしているが、うまくいけば、それはポイントを示しているものの過度に単純化した例である:私は失敗するTestSetterテストを強制する場合

[Test] public void TestSetter() { 
    Assert.That(() => myInstance.Property = "test", Throws.Nothing); 
} 

[Test] public void TestGetter() { 
    try { TestSetter(); } catch (AssertionException) { 
    Assert.Inconclusive("Unable to test, prereq failed"); 
    } 
    Assert.That(myInstance.Property, Is.EqualTo("test")); 
} 

これは、しかし動作するようには思えません両方とも、「不合格」となるTestGetterの代わりに、「失敗」の結果を示しています。私はコードを踏んで、それは間違いなくAssert.Inconclusiveコールに当たっていますが、先にAssertionExceptionが優先されているようです。

「不確定」と正しく報告する方法はありますか? NUnitの3.6.0

+0

どのバージョンのNUnitフレームワークを使用していますか? – Chris

+1

@Chris:バージョン3.6.0。 – Flynn1179

答えて

1

NUnitのフレームワークv3.6.1しようとアップグレードとC#7を使用して

、あなたが期待するようそれが実行されるかどうかを確認します。

AssertionExceptionsのキャッチに関するv3.6.0の変更がありましたが、これが後で元に戻されました。

詳細はhttps://github.com/nunit/nunit/issues/2043を参照してください。要約すると、AssertionExceptionを捕捉することは厳密にテストを書くためのサポートされたインターフェースではなく、セットアップの成功を別の方法でテストするためにはリファクタリングの価値があるかもしれないことに注意してください。

+0

ええ、それはそれを修正しました。私はこのような場合にリファクタリングする方法について提案していますが、それは「ベストプラクティス」の暗い世界を掘り下げています。残念なことに私のテストの多くでは、私が完璧に必要とする環境を設定し、それをチェックする別のテストがあります。テストを実行するだけで理想的です。 NUnitが何らかの 'Prerequisite(methodname) '機能を追加するまで、私はそれを実行するより良い方法を見いだすことができません。 – Flynn1179

+1

Test依存関係属性の公開機能リクエストがあります。あなたの投票を追加したいかもしれません。 =)https://github.com/nunit/nunit/issues/51 – Chris

関連する問題