NUnitでエラーメッセージを取得する方法をしばらく探していました。これまでのところ、IAddin と EventListener を使用してメッセージを取得するクラスをいくつか見つけましたが、機能しませんでした。このリンクに基づいてこのコードを作成しました:
プロジェクトにコードを追加しましたが、テストが失敗したときに何も記録されていないか、実行されていません。「NUnit\addins\」フォルダーに dll を追加する必要があることを読みましたが、この「addins」を含むアドイン フォルダーが見つかりませんでした。
何が欠けているのかわからない、誰か助けてくれる?
以下は私が使用したコードです:
using System;
using System.IO;
using NUnit.Core;
using NUnit.Core.Extensibility;
namespace Test
{
[NUnitAddinAttribute(Type = ExtensionType.Core,
Name = "Database Addin",
Description = "Writes test results to the database.")]
public class MyNunitExtension : IAddin, EventListener
{
public bool Install(IExtensionHost host)
{
IExtensionPoint listeners = host.GetExtensionPoint("EventListeners");
if (listeners == null)
return false;
listeners.Install(this);
return true;
}
public void RunStarted(string name, int testCount) { }
public void RunFinished(TestResult result) { }
public void RunFinished(Exception exception) { }
public void TestStarted(TestName testName) { }
public void TestFinished(TestResult result)
{
using (var arq = File.Open(@"C:\Temp\Log.txt", FileMode.Append))
using (var writer = new StreamWriter(arq))
{
var message = string.Format("[{0:s}] [{1}] {2}", DateTime.Now,
result.ResultState, result.Name);
writer.WriteLine(message);
var isFailure =
result.ResultState == ResultState.Error ||
result.ResultState == ResultState.Failure;
if (isFailure)
{
writer.WriteLine(result.Message);
}
}
}
public void SuiteStarted(TestName testName) { }
public void SuiteFinished(TestResult result) { }
public void UnhandledException(Exception exception) { }
public void TestOutput(TestOutput testOutput) { }
}
}