2

8000を超えるテストを含むテストスイートがあり、コードの変更の間にどのテストが失敗したかを確認するのが非常に困難になっています(これらのテストケースは、一部のログファイルから自動的に抽出されたクエリです)。

NUnit実行の失敗したテストのリストを取得する簡単な方法はありますか?理想的には、実行間で影響を受けたテストを比較したいと思います。

4

2 に答える 2

3

'NUnit.Core.Extensibility.IAddin'および'NUnit.Core.EventListener'を実装できます。したがって、テストの結果を操作できます。NUnit(2.5以降)は、「IAddin」のメソッドを実装するクラスを自動的にロードします。

そのように:

using System;
using System.Text;
using NUnit.Core.Extensibility;
using NUnit.Core;

namespace YourNUnitAddIns
{
    /// <summary>
    /// Coleta informacoes da execucao do NUnit.
    /// </summary>
    [NUnitAddin(
        Name="CollectNUnitFailAddIn",
        Description="do something",
        Type=ExtensionType.Core)]
    public class CollectNUnitFailAddIn : IAddin, EventListener
    {
        #region IAddin Members

        public bool Install(IExtensionHost host)
        {    
            IExtensionPoint suiteBuilders = host.GetExtensionPoint("SuiteBuilders");
            IExtensionPoint testBuilders = host.GetExtensionPoint("TestCaseBuilders");
            IExtensionPoint events = host.GetExtensionPoint("EventListeners");

            if (events == null)
                return false;

            events.Install(this);

            return true;
        }

        #endregion

        #region EventListener Members

        public void RunFinished(Exception exception)
        {
            //do something here.
        }

        public void RunFinished(TestResult result)
        {
            //do something here.
        }

        public void RunStarted(string name, int testCount)
        {
            //do something here.
        }

        public void SuiteFinished(TestResult result)
        {
            //do something here.
        }

        public void SuiteStarted(TestName testName)
        {
            //do something here.
        }

        public void TestFinished(TestResult result)
        {
            //do something here.
        }

        public void TestOutput(TestOutput testOutput)
        {
            //do something here.
        }

        public void TestStarted(TestName testName)
        {
            //do something here.
        }

        public void UnhandledException(Exception exception)
        {
            //do something here.
        }

        #endregion
    }
}
于 2012-07-11T21:11:50.527 に答える
1

NUnitのXml出力からの単純なxslt変換から結果を取得できるはずです。

CruiseControlのような継続的インテグレーションツールには、このためにXSLT変換がすでに構築されています。

https://github.com/ccnet/CruiseControl.NET/blob/master/project/xsl/AlternativeNUnitDetails.xsl

于 2012-07-13T19:41:37.077 に答える