我计划使用 nUnit 实施一些测试。我还有一个自行开发的指标记录库,我想用它来从测试中获取一些指标。所述度量库通常在应用程序中使用,并且通常使用如下:
// retrieve configuration.
string path = GetPath();
bool option = GetOption();
// Set up metrics recording object.
Metrics m = new Metrics(path, option);
Do.Something();
m.AddRecord(new Record()); // Record some metrics on what just happened
// later...
m.Finish(); // let it know we're done.
现在,我可以在每个对象(例如在父测试类中)中使用
TestFixtureSetup
和 TestFixtureTeardown
创建该对象的实例,但我更希望让这个指标对象在运行的 all 测试中持续存在。是否可能,如果可以,需要做什么?
您可以使用 SetUpFixtureAttribute -“标记一个类,其中包含给定命名空间下所有测试装置的一次性设置或拆卸方法。”
您可以将 Metrics 对象公开为单例,或者简单地作为辅助类的静态属性:
class TestHelper
{
public static Metrics Metrics { get; private set; }
static TestHelper
{
string path = GetPath();
bool option = GetOption();
Metrics = new Metrics(path, option);
}
}
好吧,这不是一个很好的模式,但对于单元测试来说应该没问题......
其他答案可能适用于旧版本的 NUnit,但对于 4.0,可以在设置方法上使用 OneTimeSetUp 属性,使其在任何测试之前而不是每次测试之前运行一次。