如何在 NUnit 测试对象之间使用持久对象?

问题描述 投票:0回答:3

我计划使用 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 测试中持续存在。是否可能,如果可以,需要做什么?

c# .net nunit
3个回答
3
投票

您可以使用 SetUpFixtureAttribute -“标记一个类,其中包含给定命名空间下所有测试装置的一次性设置或拆卸方法。”


1
投票

您可以将 Metrics 对象公开为单例,或者简单地作为辅助类的静态属性:

class TestHelper
{
    public static Metrics Metrics { get; private set; }

    static TestHelper
    {
        string path = GetPath();
        bool option = GetOption();
        Metrics = new Metrics(path, option);
    }

}

好吧,这不是一个很好的模式,但对于单元测试来说应该没问题......


0
投票

其他答案可能适用于旧版本的 NUnit,但对于 4.0,可以在设置方法上使用 OneTimeSetUp 属性,使其在任何测试之前而不是每次测试之前运行一次。

© www.soinside.com 2019 - 2024. All rights reserved.