ApplicationContext - большой брат BeanFactory, и это все, что BeanFactory предоставляет и многие другие вещи.
В дополнение к стандартным возможностям жизненного цикла org.springframework.beans.factory.BeanFactory, реализации ApplicationContext и вызывать компоненты ApplicationContextAware, а также ресурсы ResourceLoaderAware, ApplicationEventPublisherAware и MessageSourceAware.
SpecFlow создает файл .cache в папке Temp , в котором хранятся эти привязки для ускорения работы. Если этот файл выходит из строя, вы можете удалить его :
Если вы сделаете это, SpecFlow потребуется некоторое время, чтобы восстановить привязки. Пока это не будет сделано, если вы щелкнете правой кнопкой мыши по шагу и выберете «Определение шага», Visual Studio ответит: «Привязки шагов все еще анализируются. Пожалуйста, подождите.»
Я чаще всего использую это для противоположный случай, когда SpecFlow показывает, что ничто не связано, хотя шаги существуют. Но я думаю, что это сработает и для вашего случая.
<Project>
вы должны увидеть несколько команд <Import>
, добавьте:
<Import Project="..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets" Condition="Exists('..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets')" />
<!--<ItemGroup>
-->
<!-- include all feature files from the folder "FeatureFiles" -->
<!--
<None Include="Features\**\*.feature" />
</ItemGroup>
<Target Name="AfterUpdateFeatureFilesInProject">
-->
<!-- include any files that specflow generated into the compilation of the project -->
<!--
<ItemGroup>
<Compile Include="@(SpecFlowGeneratedFiles)" />
</ItemGroup>
</Target>-->
Вставьте этот фрагмент прямо в <Project></Project>
часть вашего .csproj, рядом с другими <Import>
с, если можете. Закомментированная часть важна, она регенерирует файлы .feature.cs
*.feature.cs
к вашему .gitignore после этого Если вы используете плагин SpecFlow в Visual Studio , вы можете видеть, какие строки имеют привязки, а не те, которые не имеют подсветки. Кроме того, вы также можете нажать F12, чтобы перейти к элементам, имеющим привязки, сгенерировать привязку, которую можно вставить туда, где ее нет.
Также я не видел этот процесс генерации всех шагов за один раз, как вы описали выше. Честно говоря, это кажется немного нелогичным, поскольку в SpecFlow уже есть условия предупреждения о том, что шаги не существуют.
Щелкните правой кнопкой мыши файл .feature и выберите «Запустить пользовательский инструмент». Это перезапустит SpecFlowSingleFileGenerator, который генерирует выделенный код в рамках тестирования по вашему выбору.
Я столкнулся с той же проблемой. Перезапуск Visual Studio завершит работу - SpecFlow где-то кэширует привязки.
Это похоже на ошибку для меня. Это может быть воспроизведено путем перемещения сгенерированного класса шага. Я считаю, что когда вы нажимаете «Создать определения шагов», движок попадает в кэш и не проверяет фактический файл.
Я тестирую это на Visual Sudio 2013 с плагином SpecFlow в простом простом проекте DLL.
Перезапуск VS является громоздким, особенно если у вас большой проект.
Мы изменили код плагина specflow ( https://github.com/techtalk/SpecFlow ). Добавлена команда, которая повторно инициализирует область (см. Метод EnsureInitialization) и очищает файл в цепочке.
Теперь мы просто нажимаем на кнопку, когда меняются привязки.
Если у вас возникли проблемы с привязками Specflow, например:
и перезапуск Visual Studio или восстановление привязок не работает, тогда SpecFlow Устранение неполадок интеграции Visual Studio предлагает различные решения для Visual Studio 2013 и 2015.
Вы можете восстановить все классы тестирования файлов объектов, используя предоставленный SpecFlow инструмент specflow.exe .
Предполагая, что SpecFlow был установлен через NuGet и находится в каталоге ./packages
относительно вашего текущего каталога, вы можете запустить в терминале команду
.\packages\SpecFlow.X.Y.Z\tools\specflow.exe generateall path\to\myfile.csproj
, которая восстановит все файлы объектов модульные тесты. Как указано на связанной странице, вы можете добавить флаг /force
для принудительного восстановления всех тестов.
Еще один способ проверить, что меня одурачили, - оставил ли ты ожидающий код заполнителя на месте (opps):
ScenarioContext.Current.Pending();
пометит тест как не реализованный.
Мне пришлось перезапустить VS, и это сработало для меня. Не нужно было удалять какие-либо временные файлы или что-либо еще.
да, это немного неудобно, но меньшее из всех зол, я думаю.
У меня была проблема, которая не обновляет файл разработчика файла функции. Я смог устранить ту проблему путем выполнения ниже обходного решения, и теперь мои разработчики файла функции становятся обновленными. Инструменты-> SpecFlow-> Общий-> И Включенный specflow единственный генератор файла.
версия Specflow - 2.2.1 Visual Studio 2017 и 2019