在TestSuite中收集并执行不同程序集的NUnit测试。 TestSuites是一个*.nunit
项目,使用NUnit GUI-runner创建。
出于特定测试目的,我需要在执行.nunit
TestSuite中的所有测试之前和之后执行脚本。
我如何通过保证脚本不在TestSuite中间的某个地方执行来实现这一点。 测试用例的执行顺序!
的结构: 的
TestSuite_AllTests.nunit
-> ### Run Script BEFORE ###
-> Assembly1.Test
-> TestClass1
-> TestCase1
-> TestCase2
-> TestClass2
-> TestCase1
-> TestCase2
-> Assembly2.Test
-> TestClass1
-> TestCase1
-> TestCase2
-> ### Run Script AFTER ###
答案 0 :(得分:2)
定义你的Suite
,然后将两个带属性的方法添加到类中:
[TestFixtureSetUp]
用于套件之前执行的代码,[TestFixtureTearDown]
代码执行后执行的代码。示例代码:
public class AllTests
{
[TestFixtureSetUp]
public void Setup()
{
Console.WriteLine("### Run Script BEFORE ###");
}
[TestFixtureTearDown]
public void Teardown()
{
Console.WriteLine("### Run Script AFTER ###");
}
[Suite]
public static IEnumerable Suite
{
get
{
var suite = new ArrayList();
suite.Add(new Assembly1.TestClass1());
suite.Add(new Assembly1.TestClass2());
suite.Add(new Assembly2.TestClass1());
return suite;
}
}
}
然后,使用 / fixture:命令行选项运行NUnit GUI或NUnit Console。
例如:
nunit-console /fixture:NUnit.Tests.AllTests nunit.tests.dll
以上代码的输出如下:
### Run Script BEFORE ###
***** Assembly1.TestClass1.Test1
***** Assembly1.TestClass1.Test2
***** Assembly1.TestClass2.Test1
***** Assembly1.TestClass2.Test2
***** Assembly2.TestClass1.Test1
### Run Script AFTER ###
但是,您无法将此类套件另存为.nunit文件。
正如NUnit Suite文档中所述:
NUnit对用户定义套件的支持目前有两个 限制:
- 使用此功能无法直接在套件中包含单个测试用例 新的方法。任何想要这样做的人都需要使用 旧方法并创建一个从NUnit.Core.TestCase派生的对象。 建议不要这样做,因为它需要引用核心 组件。
- 套件目前不会显示在Gui中,也不会遇到任何一个跑步者自动运行。的历史目的 套件机制是提供一种聚合测试的方法 每次运行的最高级别。因此,只有在使用时才支持它们 控制台或gui命令行上的/ fixture选项。
醇>正在调查消除这些限制的方法 未来NUnit版本的部分规划。