Где я должен размещать код, который должен запускаться только один раз (а не один раз в классе)? Примером этого может служить оператор, который инициализирует строку соединения с БД. И мне только нужно запустить это один раз, и я не хочу размещать новый метод в каждом классе TestFixture, чтобы это сделать.
Однократная инициализация для Nunit
Ответ 1
Атрибут [SetUpFixture]
позволяет запускать код установки и/или разрыва один раз для всех тестов в одном и том же пространстве имен.
Здесь находятся документы на SetUpFixture
. Согласно документам:
Набор SetUpFixture вне любого пространства имен предоставляет SetUp и TearDown для всей сборки.
Итак, если вам нужны SetUp
и TearDown
для всех тестов, просто убедитесь, что класс SetUpFixture
не находится в пространстве имен.
В качестве альтернативы вы всегда можете определить статический класс строго для целей определения "глобальных" тестовых переменных.
Ответ 2
Создайте класс (я вызываю my 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]
public void TearDown()
{
}
}
Ответ 3
[SetUpFixture]
public class TestLogging
{
[OneTimeSetUpAttribute]
public void Setup()
{
DoStuff();
}
}