2017-01-30 8 views
1

私はコンソールとテキストファイルに出力を送信する非常に単純なTestEventListenerを持っています。しかし、現在はすべてを印刷していますが、イベントをキャプチャしたいだけですが、どうすればよいか分かりません。また、それが起こったとしてそれを得ることは可能ですか?現時点では、実際には理想的ではないテストが実行された後に印刷されているように見えます。ここに私が今いるものは次のとおりです。NUnit ITestEventListenerは出力のみを継続的に取得します

class TestListener : ITestEventListener 
{ 
    StreamWriter _outputStream; 
    string _outputFile; 

    public TestListener(string outputPath) 
    { 
     _outputFile = outputPath + "\\ConsoleLog.txt"; 
     _outputStream = new StreamWriter(_outputFile); 
    } 

    public void OnTestEvent (string report) 
    { 
     WriteText(report); 
    } 

    public void WriteText(string text) 
    { 
     Console.WriteLine(text); 
     _outputStream.WriteLine(text); 
    } 
} 

答えて

0

すべてを印刷しているコードです。あなたが見たように、reportはXMLです。あなたのコードでそれを見て、何を印刷するかはあなた次第です。

おそらく、受け取ったイベントでは、テスト開始、テスト結果、および即時テキスト出力がある場合は表示されます。あなたはどちらを表示したいですか?

テストが終了した後に出力される限り、それはテスト結果の出力になります。これは明らかにテストが終了した後でなければなりません。これには、テスト中に行われたテキストの書き込みを伴う要素outputが含まれています。

即時出力(test-outputレポート)は、テストで作成する必要があります。このように送信される唯一の出力は、Console.Error、TestContext.Error、およびTestContext.Progressです。これは、テストの終了前にあなたに来る唯一の出力です。

+0

どうすればテスト出力を得ることができますか? – Mike

+0

できません。あなたはすべての出来事を手に入れます。気になるイベントをプログラムで選択して残りのイベントを無視する必要があります。 C#でXMLを処理する方法に慣れていない場合は、XmlNodeクラスのドキュメントを参照してください。 – Charlie