2010-05-27 193 views
12

我在NUnit中創建了一個測試套件,它引用了各種程序集中的幾個不同的單元測試夾具。NUnit沒有運行套件測試

我已經差不多使用的示例代碼NUnit's docs

namespace NUnit.Tests 
{ 
    using System; 
    using NUnit.Framework; 
    using System.Collections; 

    public class AllTests 
    { 
     [Suite] 
     public static IEnumerable Suite 
     { 
      get 
      { 
       ArrayList suite = new ArrayList(); 
       suite.Add(new VisionMap.DotNet.Tests.ManagedInteropTest.DotNetUtilsTest()); 
       return suite; 
      } 
     } 
    } 
} 

我的目標是多次測試添加到列表上面,所以我可以在批處理運行它們。

但是,當我嘗試加載的NUnit的圖形用戶界面的DLL我得到這個: alt text

我在做什麼錯?

我知道文檔說GUI不會運行套件,但我也試過控制檯。請問有人可以告訴我套房是否合適,以及如何使用它們來實現我的目標?

我正在使用nunit 2.5.0.9122。

編輯

好了,沒有答案即將到來。我最終找到了一個替代解決方案:類別。我通過給它們適當的類別來分組測試裝置,然後我可以批量運行它們的一個子集,同時仍然忽略另一個子集。

此套件功能似乎已完全破碎,但很奇怪。

+0

我添加了一個賞金在有人向我解釋,希望什麼套房好或如何,我可以從幾個組件內創建一個批處理的測試,而從命令行中運行所有的人。 – 2010-05-31 04:27:42

+0

恥辱的賞金沒有幫助... 發佈的唯一答案並不接近回答這個問題。 – 2010-06-06 08:37:34

+0

我總是使用這種類別的東西。它似乎得到了更廣泛的支持。 – 2012-03-09 16:01:30

回答

3

套房。如果您只想使用它們來指定哪些測試執行並且無法運行,則使用Category屬性可以更好地實現這一點。這就是你最終做的,聽起來像是你的問題的最佳解決方案。

但是,對於其他人和未來的參考,您可以仍然使用套房在Nunit。您必須從控制檯運行它們,並且只能使用/ fixture選項。例如,運行上面指定的套件,你會運行(假設你的類被編譯成彙編AllTests.dll):

nunit-console /fixture:AllTests.Suite AllTests.dll 

,你不會看到任何證據或方式來運行套房GUI - 這在文檔中有所提及。但是,您可以使用上述命令從內置於GUI中的控制檯運行它們。


我用的套房,我的一些測試,因爲我有一個要求我有時需要一個參數傳遞給我的測試方法一些奇怪的使用情況。我通過創建如下的套件來實現這一點。所以對他們來說有一些用途,只是在你的情況下不需要。

[Suite] 
    public static IEnumerable MySuite 
    { 
     get 
     { 
      var suite = new ArrayList{new TestClass1(arg1), TestClass2(arg2)}; 
      return suite; 
     } 
    } 
+0

順便說一句,如果有人知道在運行時傳遞參數/控制測試行爲的更好方法,那麼請做出評論。我花了一些時間搜索Nunit文檔和郵件列表,這是我能想到的最好的! – imoatama 2010-08-20 05:27:33

3

是否有任何理由你返回「IEnumerable」而不是「TestSuite」?

[Suite] 
public static TestSuite Suite 

更新

讀小打印處NUnit的網站頁面的底部,它看起來像套房型式試驗在桂亞軍將不會顯示在,所以我想這是個問題:)

套件當前不會顯示在Gui中,或者在遇到任何跑步者時自動運行套件。 Suite機制的歷史目的是提供一種彙總每次運行頂級測試的方法。因此,它們僅在與控制檯或gui命令行上的/ fixture選項一起使用時受支持。

更新2

我不知道你想什麼,實現了與「套房」的功能,但如果你正在努力尋找配置一組試件是的一種方式一起運行,我已經使用「NUnit測試項目」來做到這一點(它只是一個xml配置文件列出測試dll)。這允許配置一組固定的測試集的引用,然後加載到GUI或控制檯亞軍運行:是不是真的需要很多東西都在這幾天

http://www.nunit.org/index.php?p=multiAssembly&r=2.5.5

+0

這就是文檔說我應該做的:http://www.nunit.org/index.php?p=suite&r=2.4.7 我認爲這與將NUnit的版本與測試本身解耦有關。 – 2010-05-27 09:28:35

+0

a。我沒有使用/夾具選項,更重要的是,b。 _am_我應該如何運行該套件?我嘗試了GUI和控制檯..它不起作用。 – 2010-05-27 15:39:25

+0

謝謝,我會嘗試。但是,要回答你的問題,是的,這就是我想要實現的目標,並且我的印象是這就是套件的目的。如果不是,它們是幹什麼用的? – 2010-05-27 18:33:32