我在 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;
}
}
}
}
我的目标是向上面的列表添加几个测试,以便我可以批量运行它们。
But when I try to load the DLL in NUnit's GUI I get this:
![alt text](https://dl.dropbox.com/u/132375/Pics/CropperCapture%5B22%5D.Png)
我究竟做错了什么?
我知道文档说 GUI 不会运行套件,但我也尝试过控制台。有人可以告诉我套件有什么用处以及如何使用它们来实现我的目标吗?
我正在使用 nunit 2.5.0.9122。
Edit
好吧,目前还没有答案。我最终找到了替代解决方案:类别。我通过给测试装置适当的类别来对它们进行分组,然后我可以批量运行其中的一个子集,同时仍然忽略另一个子集。
不过,很奇怪的是,这个套件的功能似乎完全被破坏了。
如今,套房已经不再是真正需要的东西了。如果您只想使用它们来指定执行哪些测试和不运行哪些测试,那么使用类别属性可以更好地实现这一点。这就是您最终所做的,听起来是解决您问题的最佳解决方案。
但是,为了供他人和将来参考,您can仍然使用 Nunit 中的 Suites。您必须从控制台运行它们,并且只能使用 /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;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)