2010-05-27 257 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