我正在尝试设计一个测试套件,以便在我的所有测试之前运行全局初始化。我们可以考虑在不同的类和命名空间中存在测试。在 NUnit 文档中,我只找到了一个名为 OneTimeSetUp 的属性,但它仅适用于同一命名空间中的测试。
因此,我使用继承进行设计。我所有的测试类都继承了一个基础测试类,他的构造函数在其中执行全局初始化(借助静态变量来检查它是否已初始化),并且在析构函数中进行全局拆卸也是如此。
使用它我可以创建我的场景。但是当测试服运行时,基础测试类会创建新对象,因为在不同的类和命名空间中有测试。它导致系统过载,下一个测试运行缓慢:第一个测试运行 50 秒,而另一个(做同样的事情但在不同的命名空间中)运行 120 秒。
有一种更好的方法可以在不影响测试性能的情况下创建全局初始化和全局拆卸
最佳答案
OneTimeSetUp
仅适用于同一命名空间中的测试,您是正确的,但作为
SetUpFixture
documentation备注:
A SetUpFixture outside of any namespace provides SetUp and TearDown for the entire assembly.
所以这个类看起来像这样:
using System;
using NUnit.Framework;
[SetUpFixture]
public class TestInitializerInNoNamespace
{
[OneTimeSetUp]
public void Setup() { /* ... */ }
[OneTimeTearDown]
public void Teardown() { /* ... */ }
}
关于c# - 如何在 NUnit 3.2 中创建全局初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36157932/