【问题标题】:NUnit not running Suite testsNUnit 没有运行套件测试
【发布时间】:2011-02-24 13:23:12
【问题描述】:

我在 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 的 GUI 中加载 DLL 时,我得到了这个:

我做错了什么?

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

我正在使用 nunit 2.5.0.9122。

编辑

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

不过,很奇怪,这个套件功能似乎完全被破坏了。

【问题讨论】:

  • 我添加了一个赏金,希望有人向我解释套件有什么好处,或者我可以如何从几个程序集中创建一批测试而无需从命令行运行所有测试。
  • 很遗憾赏金没有帮助...发布的唯一答案并没有接近回答问题。
  • 我总是对这类事情使用类别。它似乎得到了更广泛的支持。

标签: c# .net unit-testing testing nunit


【解决方案1】:

如今,任何事情都不需要套件。如果您只想使用它们来指定哪些测试可以运行和不运行,那么使用 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;
        }
    }

【讨论】:

  • 顺便说一句,如果有人知道比我所做的更好的方法来传递参数/控制运行时测试的行为,请发表评论。我花了一些时间搜索 Nunit 文档和邮件列表,这是我能想到的最好的!
【解决方案2】:

您是否有任何理由返回“IEnumerable”而不是“TestSuite”?

[Suite]
public static TestSuite Suite 

更新

阅读 NUnit 站点页面底部的小字体,看起来 Suite 类型测试不会显示在 Gui 运行器中,所以我想这就是问题所在:)

套件目前不显示在 Gui 中,也不会在遇到任何跑步者时自动运行。 Suite 机制的历史目的是提供一种在每次运行的顶层聚合测试的方法。因此,它们仅在与控制台或 gui 命令行上的 /fixture 选项一起使用时才受支持。

更新 2

我不确定你想通过“套件”功能实现什么,但如果你想找到一种方法来配置一组测试程序集以一起运行,我使用了“NUnit测试项目”在过去执行此操作(它只是一个列出测试 dll 的 xml 配置文件)。这允许配置一组固定的测试程序集引用,然后将其加载到 GUI 中或由控制台运行器运行:

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

【讨论】:

  • 这就是文档说我应该做的:nunit.org/index.php?p=suite&r=2.4.7 我认为这与将 NUnit 的版本与测试本身解耦有关。
  • 一个。我没有使用 /fixture 选项,更重要的是,b.我应该如何运行该套件?我尝试了 GUI 和控制台。它不起作用。
  • 谢谢,我会试试的。但要回答你的问题,是的,这就是我想要达到的目标,我的印象是这就是套房的用途。如果不是,它们是干什么用的?
  • hmm.. NUnit 测试项目解决方案的问题是我无法指定需要运行每个程序集的哪些测试。这基本上是我想要套房的主要原因。
  • 嗨。你解决问题了吗?我想我有同样的问题。我必须使用套件属性将我的测试与 MSBuild 集成。但是命令行不起作用。它说“无法找到夹具 xxx”。
猜你喜欢
  • 2016-10-24
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多