2

nunit-consoleこのように動作するようです (params: /nologo /wait /labels ...)

次のように、テストの開始時に各テストのラベルのみを出力します。

***** Our.Tests.Bla
... here come some Console.WriteLine
// Note that in case Our.Tests.Bla fails, nothing is reported here immediately
***** Our.Tests.Blub
... here come some Console.WriteLine
***** Our.Tests.Foo
... here come some Console.WriteLine

いずれかのテストが失敗した場合、完全な実行の最後にのみテストの失敗が報告されます。

通常はこれで問題ありませんが、NUnit を介していくつかの相互依存統合テストも実行しており、前のテストが失敗したために1 つのテストがハングすることがあります。

問題は、1 つのテストがハングすると、以前のテストが失敗したかどうかがわからないため、問題をすばやく追跡することが非常に困難になることです。(特に、テスト サーバー マシンでテストがハングしている場合、または中止された実行のログしかない場合)。

NUnit が失敗したテスト (詳細なエラーを含む) をその場で/次のテストを開始する直前に報告することを本当に望んでいます。これは可能ですか?

4

4 に答える 4

4

これを行う 1 つの方法として、テスト ファイルに Teardown を含めることができます。これは、テストが完了するたびに実行され、失敗した場合はテストの名前を出力できます。

    [TearDown]
    public void TearDown()
    {
        var status = TestContext.CurrentContext.Result.Status;
        if(status != TestStatus.Passed)
          Console.WriteLine("Test Failed: {0}", TestContext.CurrentContext.Test.FullName);   
    }
于 2014-11-05T01:48:58.153 に答える
1

ここでの別の質問では、最初に発生したエラーでコンソール ランナーを停止させることについて尋ねました

オプションはあなたが求めた/stoponerrorものではありませんが、おそらくあなたが得るものと同じくらい良いものになるでしょう.

于 2014-10-03T15:03:36.250 に答える
1

この回答は、アンドリューの回答に基づいています

一部のクラスは NUnit 3 で変更されたため、TearDownメソッドも変更する必要があります。結果は次のようになります。

[TearDown]
public void TearDown()
{
    var status = TestContext.CurrentContext.Result.FailCount;
    if (status > 0)
        Console.WriteLine("Test Failed: {0}\r\nMessage:\r\n{1}", 
                           TestContext.CurrentContext.Test.FullName, 
                           TestContext.CurrentContext.Result.Message);          
} 
于 2015-11-03T17:49:44.860 に答える