2012-07-11 89 views
2

我有一個包含8000多個測試的測試套件,它很難看到代碼更改(這些測試案例是從一些日誌文件中自動提取的查詢)之間破壞的測試。從Nunit獲取失敗測試列表

是否有一種簡單的方法來獲取NUnit運行失敗測試列表?理想情況下,我想比較哪些測試受到影響。

+3

您是否嘗試過使用一些持續集成工具,TeamCity的?它使得這很容易 – 2012-07-11 21:13:48

+0

謝謝,我也會試一試。目前,實現一個事件監聽器完成了這項工作。 – 2012-07-12 19:24:28

回答

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 
    } 
} 
相關問題