NUnit没有运行套件测试

Ass*_*vie 12 .net c# testing nunit unit-testing

我在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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的目标是在上面的列表中添加几个测试,以便我可以批量运行它们.

但是当我尝试在NUnit的GUI中加载DLL时,我得到了这个: 替代文字

我究竟做错了什么?

我知道文档说GUI不会运行套件,但我也尝试过控制台.有人可以告诉我套房有什么用处以及如何使用它们来实现我的目标吗?

我正在使用nunit 2.5.0.9122.

编辑

好吧,没有答案即将到来.我最终找到了另一种解决方案:分类.我通过给出适当的类别对测试夹具进行分组,然后我可以批量运行它们的子集,同时仍然忽略另一个子集.

但是,很奇怪这个套件功能似乎完全被打破了.

imo*_*ama 3

如今,套房已经不再是真正需要的东西了。如果您只想使用它们来指定执行哪些测试和不运行哪些测试,那么使用类别属性可以更好地实现这一点。这就是您最终所做的,听起来是解决您问题的最佳解决方案。

但是,为了供他人和将来参考,您仍然可以在 Nunit 中使用 Suites。您必须从控制台运行它们,并且只能使用 /fixture 选项。例如,要运行上面指定的套件,您需要运行(假设您的类被编译到程序集 AllTests.dll 中):

nunit-console /fixture:AllTests.Suite AllTests.dll
Run Code Online (Sandbox Code Playgroud)

您不会在 GUI 中看到任何运行套件的证据或方式 - 这在文档中已注明。不过,您可以使用上述命令从 GUI 内置的控制台运行它们。


我在一些测试中使用套件,因为我有一些奇怪的用例,有时需要将参数传递给我的测试方法。我通过创建如下所示的套件来做到这一点。所以它们有一些用途,但在您的情况下不需要。

[Suite]
    public static IEnumerable MySuite
    {
        get
        {
            var suite = new ArrayList{new TestClass1(arg1), TestClass2(arg2)};
            return suite;
        }
    }
Run Code Online (Sandbox Code Playgroud)