我试图在我的所有测试之前设计一个测试套件来运行全局初始化。我们可以考虑在不同的类和命名空间中存在测试。在NUnit文档中,我只找到了一个名为OneTimeSetUp的属性,但它仅适用于同一命名空间中的测试。
所以,我设计使用inherting。我的所有测试类都包含一个基本测试类,其构造函数执行全局的inicialization(在静态变量的帮助下检查它是否已初始化),以及析构函数中的全局拆除。
使用它我可以创建我的场景。但是当测试套件运行时,基本测试类会创建新对象,因为在不同类和名称空间中存在测试。它导致系统中的重叠并且下一个测试运行缓慢:第一个测试在50秒内运行,而另一个(在不同的命名空间中执行相同的操作)在120秒内运行。
有一种更好的方法可以在不影响测试性能的情况下创建全局理解和全局拆解
答案 0 :(得分:12)
你是正确的OneTimeSetUp
仅适用于同一名称空间中的测试,但是作为
SetUpFixture
documentation注意:
任何名称空间外的SetUpFixture 为整个程序集提供SetUp和TearDown。
所以这个课程看起来像这样:
using System;
using NUnit.Framework;
[SetUpFixture]
public class TestInitializerInNoNamespace
{
[OneTimeSetUp]
public void Setup() { /* ... */ }
[OneTimeTearDown]
public void Teardown() { /* ... */ }
}