Однократная инициализация для Nunit - PullRequest
50 голосов
/ 06 июля 2010

Где мне разместить код, который должен запускаться только один раз (а не один раз для каждого класса)? Примером этого может быть инструкция, которая инициализирует строку подключения к БД. И мне нужно только запустить это один раз, и я не хочу помещать новый метод в каждый класс "TestFixture" просто для этого.

Ответы [ 3 ]

58 голосов
/ 06 июля 2010

Атрибут [SetUpFixture] позволяет запускать код установки и / или разборки кода один раз для всех тестов в одном и том же пространстве имен.

Здесь - это документы по SetUpFixture.Согласно документам:

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

Так что если вам нужны SetUp и TearDown длявсе тесты, а затем просто убедитесь, что класс SetUpFixture не находится в пространстве имен.

В качестве альтернативы, вы всегда можете определить статический класс строго с целью определения «глобальных» тестовых переменных.

41 голосов
/ 06 июля 2010

Создайте класс (я называю мой Config) и украсьте его атрибутом [SetUpFixture].Методы [SetUp] и [TearDown] в классе будут выполняться один раз.

[SetUpFixture]
public class Config
{
    [SetUp]  // [OneTimeSetUp] for NUnit 3.0 and up; see http://bartwullems.blogspot.com/2015/12/upgrading-to-nunit-30-onetimesetup.html
    public void SetUp()
    {
    }

    [TearDown]  // [OneTimeTearDown] for NUnit 3.0 and up
    public void TearDown()
    {
    }
}
12 голосов
/ 23 августа 2016

NUnit 3 :

[SetUpFixture]
public class TestLogging
{
    [OneTimeSetUp]
    public void Setup()
    {
        DoStuff();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...