各テスト後にテスト実行中にNUnitコンソールレポートのテスト結果を持つ

StackOverflow https://stackoverflow.com//questions/22070217

  •  23-12-2019
  •  | 
  •  

質問

私のテストアセンブリにNUnitコンソールを実行しますが、時には私のヌニットがクラッシュすることがあります(私は現在考え出している理由)。NUnitがクラッシュすると、XMLレポートが作成されず、テストレポートなしでも効果的に残しています。テスト実行は非常に長く、テスト実行レポート全体を失うと悪い状況です。 XMLログファイルを表示するようにNUnitに通知する方法があります(各テストの後)。たとえそれがたとえそれがXMLファイルは正しく閉じられないことを意味しています。 NUnit TestListenerを使用することが可能であることを知っています。しかし、余分なコードを自分で書くことを含まないスイッチや何かが含まれています。

役に立ちましたか?

解決

nunit-consoleコマンドラインスイッチで/labelsを呼び出すことができます。これにより、出力にテスト結果は含まれていませんが、それが実行されるときに各テストの(完全修飾された)名前をコンソールに書き出すことができます。ただし、どのテストが正常に実行されたのかを表示します。

他の唯一の選択肢は、あなたが割引したもの、あなた自身のEventListener実装を書くことのものです。そのインターフェースに関するドキュメントは少し光ですが、 NUnitアドインアセンブリの作成に関するNUnitのマニュアルは十分であるべきです。あなたがそれについてあなたの心を変えるなら、あなたは始めましょう。

他のヒント

まず最初に、このようなロギングが箱から出して登録されています - この機能はすでに要求されていました - テストとして部分的な結果を書く

その完了までは、いくつかのカスタムコードを書く必要があります。ununit <3.xではかなり単純な場合:
1)EventListenerインターフェースを実装するイベントリスナーを作成する必要があります。 2)このインタフェースは、テスト実行のさまざまな状態に対する通知を提供します。 RunStarted、RunfinisedまたはTestFinishised。必要なのはあなたの事件に関連するロギングの実装です。私のコードからのスニペット:

 public void RunStarted(string name, int testCount)
 {
     try
     {
         _instanceId = Environment.GetEnvironmentVariable("InstanceId");
         _buildId = Environment.GetEnvironmentVariable("BuildId");
         _browser = Environment.GetEnvironmentVariable("BrowserToTest");
         _template = Environment.GetEnvironmentVariable("TemplateToTest");
     }
     catch { }
 }

 public void TestFinished(TestResult result)
 {
     if (result.ResultState == ResultState.Ignored)
     {
         return;
     }
     var r = new TestingWorkerData
     {
         BuildId = _buildId,
         InstanceId = _instanceId,
         TestName = result.FullName,
         Success = result.IsSuccess,
         TimeTaken = result.Time.ToString(CultureInfo.InvariantCulture),
         Message = result.Message,
         StackTrace = result.StackTrace,
         Browser = _browser,
         Template = _template
     };         
     File.AppendAllLines(@"z:\\results.txt", new[] {JsonConvert.SerializeObject(r)});
 }

 public class TestingWorkerData
 {
     public string TestName { get; set; }
     public bool Success { get; set; }
     public string TimeTaken { get; set; }
     public string Message { get; set; }
     public string StackTrace { get; set; }
     public string InstanceId { get; set; }
     public string Browser { get; set; }
     public string Template { get; set; }
     public string BuildId { get; set; }
 }
.

3)最後のことはNUnit Addinの作成です:

[NUnitAddin]
public class ProgressReporterNugetAddin : IAddin
{
    public bool Install(IExtensionHost host)
    {
        var listeners = host.GetExtensionPoint("EventListeners");
        listeners.Install(new ProgressReporterEventListener());
        return true;
    }
}
.

注:かなり良い記事があります。 /jimmykeen.net/28/015/02/28/logging-test-results-with-nunit/ どちらがもっとカバーしています。
残念ながら、 nunit <3.xのみ NUNIT3は重く書き直されたので - 例えば。 EventListenerインターフェースはもうありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top