Specflow, как реализовать изоляцию AppDomain с помощью Nunit 3

Я написал тесты автоматизации в Specflow 2.0, nUnit 3.X, TeamCity и Visual Studio 2013. Я пытаюсь запустить тесты параллельно, но они терпят неудачу, потому что код использует статические классы/объект.

На веб-сайте Specflow рекомендуется запускать потокобезопасные тесты (если архитектура зависит от статического состояния) с использованием ПАРАЛЛЕЛЬНОГО ВЫПОЛНЕНИЯ С ИЗОЛЯЦИЕЙ ПАМЯТИ (ДОМЕН ПРИЛОЖЕНИЯ) http://www.specflow.org/documentation/Parallel-Execution/

Но нет никакой информации о том, как это сделать, и даже погуглив я не смог найти подходящей статьи.

Я очень признателен, если кто-нибудь может помочь мне понять, как мы это делаем.

Спасибо за помощь, Сатти.


person SoMuchtoLearn    schedule 24.10.2016    source источник


Ответы (2)


То, как настроить изоляцию, зависит от используемого вами средства запуска тестов.
Я не уверен на 100 %, что NUnit поддерживает изоляцию домена приложения, но хорошим началом для выяснения этого будет документация по атрибуту Parallelizable: https://github.com/nunit/docs/wiki/Parallelizable-Attribute

Разделение AppDomain или Process возможно, если вы используете SpecFlow+Runner (http://www.specflow.org/plus/).
Вот запись в блоге о различных режимах SpecFlow+Runner: https://the-engineers.net/2016/04/08/using-specflowrunners-parallelization-features/


Полное раскрытие информации: я являюсь одним из разработчиков SpecFlow+Runner.

person Andreas Willich    schedule 24.10.2016
comment
Спасибо, Андреас, я могу запускать несколько потоков, но проблема в том, что тесты не являются потокобезопасными, чего я и пытаюсь достичь. К сожалению, specflow+ платный, и я постараюсь сделать это без него, если смогу. - person SoMuchtoLearn; 25.10.2016
comment
Как специалист по сопровождению NUnit, я могу сказать вам, что параллельное выполнение NUnit не поддерживает изоляцию AppDomain для параллельных тестов, а только для самого тестового прогона. Это хорошая идея для функции, но поскольку .NET Core в ближайшее время не будет поддерживать создание доменов приложений, она будет ниже в наших приоритетах. - person Rob Prouse; 14.11.2016

Вот почему вы не должны использовать статические классы в своем коде. Код со статическими (похожими на глобальные) классами считается вредным и трудно тестируемым.

person Liraz Shay    schedule 23.04.2020