2016-03-22 3 views
4

Я пытаюсь разработать тестовый костюм для запуска глобальной инициализации перед всеми моими испытаниями. Мы можем считать, что существуют тесты в разных классах и пространствах имен. В документации NUnit я нашел только атрибут OneTimeSetUp, но он работает только для тестов в одном и том же пространстве имен.Как создать глобальную инициализацию в NUnit 3.2?

Итак, я разработал с использованием наследования. все мои классы тестов наследуют базовый тестовый класс, где его конструктор выполняет глобальную инициализацию (с помощью статической переменной, чтобы проверить, была ли она инициализирована или не была инициализирована), и то же самое, что и глобальный разрыв в деструкторе.

Используя его, я мог бы создать свой сценарий. Но когда тестовый костюм работает, базовый тестовый класс создает новые объекты, потому что есть тесты в разных классах и пространствах имен. Это вызывает избыточное число в системе, и следующие тесты выполняются медленно: первый тест выполняется через 50 секунд, а другой (который делает то же самое, но в другом пространстве имен) работает через 120 секунд.

Существует лучший способ создания глобальной inicialization и глобальный демонтажа без влияния на результатах теста

ответ

8

Вы правы, что OneTimeSetUp работает только для тестов в том же пространстве имен, но как SetUpFixture documentation нота:

A SetUpFixture вне любого пространства имен предоставляет SetUp и TearDown для всей сборки.

Так что класс будет выглядеть следующим образом:

using System; 
using NUnit.Framework; 

[SetUpFixture] 
public class TestInitializerInNoNamespace 
{ 
    [OneTimeSetUp] 
    public void Setup() { /* ... */ } 

    [OneTimeTearDown] 
    public void Teardown() { /* ... */ } 
} 
+0

Таким образом, в этом случае, я должен использовать 'SetUpFixture' вместо' TestFixture', как вы пишете в вашем примере кода, правильно? –

+0

Я попробую оба случая, и, если некоторые из этих работ, я рассмотрю ваш тент. Благодаря! –

+0

К сожалению, это должно было быть SetUpFixture. Ред. – stuartd

Смежные вопросы