Отвечая на ту часть вашего вопроса, которая касается работы NUnit ...
Ответ, который вы процитировали относительно времени жизни экземпляров приборов в NUnit, вводит в заблуждение и немного удивляет, потому что в этом нет большой загадки!
Цитата из Джима Ньюкирка, основной разработки NUnit V2, является просто заявлением о том, как он хотел, чтобы он сделал NUnit V2. Он реализовал эти идеи в рамках xUnit.net, но это не относится к NUnit 3.
NUnit 3, как и NUnit V2, создает один экземпляр TestFixture
, который используется для всех ваших тестов. Вы можете создавать объекты для использования в своих тестах, используя [OneTimeSetUp]
, и сохранять их как члены класса. Если эти объекты с состоянием, следует избегать использования параллельного выполнения тестов для тестов в приборе, который их использует.
Если требуется дополнительная настройка для каждого теста, вы можете использовать [SetUp]
для этой цели и [TearDown]
, чтобы удалить любые изменения, которые могут негативно повлиять на последующие тесты.
Вы также можете указать порядок тестов, но это, как правило, не очень хорошая идея, потому что один неработающий тест может привести к сбою последующих тестов. Постарайтесь сделать каждый тест независимым, если можете.
Также обратите внимание, что если вы хотите иметь возможность запускать одно и то же устройство несколько раз для различных типов объектов, хорошим параметром является параметризованное устройство. Просто передайте в конструктор достаточно информации, чтобы правильная инициализация объекта могла быть выполнена в одноразовой установке.
Обязательно ознакомьтесь с подробностями всего вышеперечисленного в документации: https://github.com/nunit/docs/wiki