Как использовать постоянный объект между тестовыми объектами NUnit?

Я планирую реализовать некоторые тесты с использованием 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 в каждом объекте (например, в родительском тестовом классе), но я бы предпочел, чтобы этот объект метрик сохранялся при выполнении всех тестов. Возможно ли это, и если да, то что для этого нужно?


person Robert P    schedule 21.09.2009    source источник


Ответы (2)


Вы можете использовать SetUpFixtureAttribute - "помечает класс, содержащий одноразовые методы настройки или демонтажа для всех тестовых приспособлений в заданном пространстве имен».

person TrueWill    schedule 21.09.2009
comment
Похоже, это путь nUnit. Спасибо! - person Robert P; 22.09.2009

Вы можете представить объект Metrics как синглтон или просто как статическое свойство вспомогательного класса:

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

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

}

Хорошо, это не очень хороший шаблон, но для модульных тестов он должен подойти...

person Thomas Levesque    schedule 21.09.2009
comment
Синглтоны имеют свое место. Это может быть только один. :) - person Robert P; 22.09.2009