我试图在所有测试之前设计一套测试服来运行全局初始化。我们可以考虑在不同的类和名称空间中存在测试。在NUnit文档中,我只找到一个名为OneTimeSetUp的属性,但它只适用于同一个命名空间中的测试。
所以,我设计使用继承。我的所有测试类都继承了一个基类,其中他的构造函数执行全局inicialization (借助静态变量检查它是否已初始化),与析构函数中的全局拆卸相同。
使用它,我可以创建我的场景。但是,当测试套件运行时,基类会创建新的对象,因为在不同的类和名称空间中都有测试。它会导致系统中的过载,而下一个测试运行缓慢:第一个测试在50秒内运行,而另一个测试(在不同的名称空间中做相同的事情)在120秒内运行。
有一种更好的方法可以在不影响测试性能的情况下创建全局无关化和全局拆卸。
发布于 2016-03-22 07:14:13
正确的是,OneTimeSetUp
只适用于同一命名空间中的测试,但正如 documentation注意到的:
任何命名空间之外的为整个程序集提供SetUp和TearDown。
所以这门课看起来是这样的:
using System;
using NUnit.Framework;
[SetUpFixture]
public class TestInitializerInNoNamespace
{
[OneTimeSetUp]
public void Setup() { /* ... */ }
[OneTimeTearDown]
public void Teardown() { /* ... */ }
}
https://stackoverflow.com/questions/36157932
复制相似问题