Мы обновили наше решение от SpecFlow1.9 до 2.0 и NUnit2.6.4 до 3.2.1. После адаптации некоторых атрибутов и параметров проекта все тесты выполняются отлично в NUnit. Однако, когда испытания SpecFlow выполнены с NCrunch, мы получаем SpecFlowException:SpecFlow и NCrunch: многопоточная ошибка при выполнении в одном потоке
TechTalk.SpecFlow.SpecFlowException : The ScenarioContext.Current static accessor cannot
be used in multi-threaded execution. Try injecting the scenario context to the binding
class. See http://go.specflow.org/doc-multithreaded for details.
at TechTalk.SpecFlow.ScenarioContext.get_Current()
Мы специально разработали наши тесты SpecFlow для однопоточных сред (держать усилия ниже) и мы просто хотим, чтобы продолжить выполнение этих тесты в одном потоке. Поэтому вместо того, чтобы вводить контекст сценария в качестве предлагаемого решения (мы используем NInject вместо SpecFlow mini-IoC), мы ищем некоторые настройки, чтобы убедить SpecFlow, что он работает в однопоточной среде.
Вот NCrunch 2.23.0.2 настройки:
Я вошел в файлах Assembly.cs всех SpecFlow тестирует следующий атрибут:
[assembly: Parallelizable(ParallelScope.None)]
без успеха; исключение продолжает появляться.
Кто-нибудь знает, как заставить SpecFlow2.0 в NCrunch2.23.0.2 с NUnit3.2.1 так, чтобы он думал, что он выполняется в однопоточной среде?
Благодарим вас за внимание!
2016-5-31: обновление
Я установил новую версию 2.1 SpecFlow (доступно начиная с 2016-5-25), но это не решило проблему.
Я создал example project с минимальным количеством кода для создания проблемы. Реализация калькулятора является statefull и не может быть протестирована в многопоточной среде.
SpecFlow выдает исключение из-за статической ссылки (фиктивный) «ScenarioContext.Current» в CustomContext. Да, я знаю, что вы должны его вводить, если вы собираетесь работать в многопоточной тестовой среде. Проблема в том, что SpecFlow ДУМАЕТ, что он находится в многопоточной среде, но это не так, и это не должно.
remco [поднял вопрос] (https://github.com/techtalk/SpecFlow/issues/638) на страница с ошибками в github. Пожалуйста, следуйте этой проблеме. –
2016-08-01. Согласно странице выпуска, это было исправлено в предварительной версии, доступной из AppVeyor – stevef4000