0

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) { }
}
}
4

1 に答える 1