#c# #unit-testing #nunit
#c# #модульное тестирование #nunit
Вопрос:
Возможно ли иметь NUnit OneTimeSetUp для всей сборки?
В моем проекте у меня есть класс BaseTest, который находится в пространстве MyProject.Tests.Basics
имен, и у меня есть класс setup, который содержит метод [OneTimeSetUp]. Класс SetUp находится в пространстве имен MyProject.Tests
Когда я запускаю тест, который является производным от класса BaseTest и находится, например, в пространстве MyProject.Tests.Data
имен, тогда метод OneTimeSetUp не вызывается. Но когда я меняю пространство имен моего класса SetUp на пространство имен тестового класса, тогда метод вызывается просто отлично, но, конечно, только для этого конкретного тестового класса.
Итак, мой вопрос в том, как я могу реализовать класс SetUp, который работает для всей сборки?
Вот мои примеры кода:
Класс установки:
namespace MyProject.Tests
{
[SetUpFixture]
public class SetUp
{
[OneTimeSetUp]
public void Setup()
{
...
}
}
}
Базовый тест:
namespace MyProject.Tests.Basics
{
[TestFixture]
public abstract class BaseTest
{
public BaseTest()
{
...
}
}
}
Тестовый класс:
namespace MyProject.Tests.Data.IO.Files.DataFiles
{
public class ExampleTest: BaseTest
{
[Test]
public void Example()
{
...
}
}
}
Ответ №1:
Для этого поместите свой SetUpFixture
класс в глобальное пространство имен, то есть не помещайте его ни в одно пространство имен.
Это задокументировано в документах NUnit, как показано ниже:
SetUpFixture вне любого пространства имен обеспечивает настройку и демонтаж для всей сборки.
https://docs.nunit.org/articles/nunit/writing-tests/attributes/setupfixture.html