簡體   English   中英

NUnit沒有運行套件測試

[英]NUnit not running Suite tests

我在NUnit中創建了一個測試套件,它引用了各種組件中的幾個不同的單元測試夾具。

我幾乎使用了NUnit文檔中的示例代碼:

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的GUI中加載DLL時,我得到了這個: 替代文字

我究竟做錯了什么?

我知道文檔說GUI不會運行套件,但我也嘗試過控制台。 有人可以告訴我套房有什么用處以及如何使用它們來實現我的目標嗎?

我正在使用nunit 2.5.0.9122。

編輯

好吧,沒有答案即將到來。 我最終找到了另一種解決方案:分類。 我通過給出適當的類別對測試夾具進行分組,然后我可以批量運行它們的子集,同時仍然忽略另一個子集。

但是,很奇怪這個套件功能似乎完全被打破了。

您有沒有理由返回“IEnumerable”而不是“TestSuite”?

[Suite]
public static TestSuite Suite 

更新

在NUnit網站上閱讀頁面底部的小字體,看起來套件類型測試不會顯示在Gui跑步者中,所以我猜這就是問題:)

套件目前不會顯示在Gui中,也不會遇到任何一個跑步者自動運行。 Suite機制的歷史目的是提供一種在每次運行的頂層聚合測試的方法。 因此,只有在控制台或gui命令行上使用/ fixture選項時才支持它們。

更新2

我不確定你試圖通過“套件”功能實現什么,但是如果你想找到一種配置一組測試組件來一起運行的方法,我已經使用“ NUnit測試項目 ”來做到這一點在過去(它只是一個列出測試dll的xml配置文件)。 這允許配置一組固定的測試程序集引用,然后將其加載到GUI或由控制台運行程序運行:

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

這些天來,套房並不是真正需要的。 如果您只想使用它們來指定哪些測試執行和不運行,則使用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;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM