各テスト後にテスト実行中にNUnitコンソールレポートのテスト結果を持つ
-
23-12-2019 - |
質問
私のテストアセンブリにNUnitコンソールを実行しますが、時には私のヌニットがクラッシュすることがあります(私は現在考え出している理由)。NUnitがクラッシュすると、XMLレポートが作成されず、テストレポートなしでも効果的に残しています。テスト実行は非常に長く、テスト実行レポート全体を失うと悪い状況です。 XMLログファイルを表示するようにNUnitに通知する方法があります(各テストの後)。たとえそれがたとえそれがXMLファイルは正しく閉じられないことを意味しています。 NUnit TestListenerを使用することが可能であることを知っています。しかし、余分なコードを自分で書くことを含まないスイッチや何かが含まれています。
解決
nunit-console
コマンドラインスイッチで/labels
を呼び出すことができます。これにより、出力にテスト結果は含まれていませんが、それが実行されるときに各テストの(完全修飾された)名前をコンソールに書き出すことができます。ただし、どのテストが正常に実行されたのかを表示します。
他の唯一の選択肢は、あなたが割引したもの、あなた自身のEventListener
実装を書くことのものです。そのインターフェースに関するドキュメントは少し光ですが、
他のヒント
まず最初に、このようなロギングが箱から出して登録されています - この機能はすでに要求されていました - テストとして部分的な結果を書く
その完了までは、いくつかのカスタムコードを書く必要があります。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インターフェースはもうありません。