我一直在寻找在 NUnit 中获取错误消息的方法。到目前为止,我发现了一些使用 IAddin 和 EventListener 来获取消息的类,但是没有用。我将此代码基于此链接:
我将代码添加到项目中,但没有记录任何内容,或者在测试失败时没有做任何事情。我读到我必须将 dll 添加到一些“NUnit\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) { }
}
}