Ошибка спецпотока: возможна ли принудительная регенерация?

ApplicationContext - большой брат BeanFactory, и это все, что BeanFactory предоставляет и многие другие вещи.

В дополнение к стандартным возможностям жизненного цикла org.springframework.beans.factory.BeanFactory, реализации ApplicationContext и вызывать компоненты ApplicationContextAware, а также ресурсы ResourceLoaderAware, ApplicationEventPublisherAware и MessageSourceAware.

29
задан Raedwald 1 March 2019 в 14:36
поделиться

11 ответов

SpecFlow создает файл .cache в папке Temp , в котором хранятся эти привязки для ускорения работы. Если этот файл выходит из строя, вы можете удалить его :

  1. Выйти из Visual Studio.
  2. Откройте проводник Windows.
  3. В адресной строке введите% TEMP% и нажмите Enter, чтобы перейти к вашей временной папке.
  4. Найдите файлы, имена которых начинаются с «specflow-stepmap-YourProjectName» с расширением .cache.
  5. Удалить эти файлы.
  6. Снова запустите Visual Studio.

Если вы сделаете это, SpecFlow потребуется некоторое время, чтобы восстановить привязки. Пока это не будет сделано, если вы щелкнете правой кнопкой мыши по шагу и выберете «Определение шага», Visual Studio ответит: «Привязки шагов все еще анализируются. Пожалуйста, подождите.»

Я чаще всего использую это для противоположный случай, когда SpecFlow показывает, что ничто не связано, хотя шаги существуют. Но я думаю, что это сработает и для вашего случая.

85
ответ дан Ryan Lundy 1 March 2019 в 14:36
поделиться
  • Закрыть Visual Studio
  • Открыть .csproj в текстовом редакторе, таком как NotePad ++
  • Предполагая, что вы используете SpecFlow 2.2.0
  • Предполагая ваши функции находятся в ./Features
  • В области <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

  • . Повторно открывайте Visual Studio
  • Каждый раз, когда вы собираете файлы .feature.cs, они будут перезапущены
  • Вы можете добавить *.feature.cs к вашему .gitignore после этого
1
ответ дан abbaf33f 1 March 2019 в 14:36
поделиться

Если вы используете плагин SpecFlow в Visual Studio , вы можете видеть, какие строки имеют привязки, а не те, которые не имеют подсветки. Кроме того, вы также можете нажать F12, чтобы перейти к элементам, имеющим привязки, сгенерировать привязку, которую можно вставить туда, где ее нет.

Также я не видел этот процесс генерации всех шагов за один раз, как вы описали выше. Честно говоря, это кажется немного нелогичным, поскольку в SpecFlow уже есть условия предупреждения о том, что шаги не существуют.

0
ответ дан AlSki 1 March 2019 в 14:36
поделиться

Щелкните правой кнопкой мыши файл .feature и выберите «Запустить пользовательский инструмент». Это перезапустит SpecFlowSingleFileGenerator, который генерирует выделенный код в рамках тестирования по вашему выбору.

12
ответ дан Marcus Hammarberg 1 March 2019 в 14:36
поделиться

Я столкнулся с той же проблемой. Перезапуск Visual Studio завершит работу - SpecFlow где-то кэширует привязки.

Это похоже на ошибку для меня. Это может быть воспроизведено путем перемещения сгенерированного класса шага. Я считаю, что когда вы нажимаете «Создать определения шагов», движок попадает в кэш и не проверяет фактический файл.

Я тестирую это на Visual Sudio 2013 с плагином SpecFlow в простом простом проекте DLL.

0
ответ дан Ognyan Dimitrov 1 March 2019 в 14:36
поделиться

Перезапуск VS является громоздким, особенно если у вас большой проект.

Мы изменили код плагина specflow ( https://github.com/techtalk/SpecFlow ). Добавлена ​​команда, которая повторно инициализирует область (см. Метод EnsureInitialization) и очищает файл в цепочке.

Теперь мы просто нажимаем на кнопку, когда меняются привязки.

0
ответ дан Munduz Subanov 1 March 2019 в 14:36
поделиться

Если у вас возникли проблемы с привязками Specflow, например:

  • шаги не распознаны
  • , привязки не найдены

и перезапуск Visual Studio или восстановление привязок не работает, тогда SpecFlow Устранение неполадок интеграции Visual Studio предлагает различные решения для Visual Studio 2013 и 2015.

0
ответ дан Ralph Willgoss 1 March 2019 в 14:36
поделиться

Вы можете восстановить все классы тестирования файлов объектов, используя предоставленный SpecFlow инструмент specflow.exe .

Предполагая, что SpecFlow был установлен через NuGet и находится в каталоге ./packages относительно вашего текущего каталога, вы можете запустить в терминале команду

.\packages\SpecFlow.X.Y.Z\tools\specflow.exe generateall path\to\myfile.csproj

, которая восстановит все файлы объектов модульные тесты. Как указано на связанной странице, вы можете добавить флаг /force для принудительного восстановления всех тестов.

0
ответ дан Chris Midgley 1 March 2019 в 14:36
поделиться

Еще один способ проверить, что меня одурачили, - оставил ли ты ожидающий код заполнителя на месте (opps):

ScenarioContext.Current.Pending();

пометит тест как не реализованный.

0
ответ дан Ben 1 March 2019 в 14:36
поделиться

Мне пришлось перезапустить VS, и это сработало для меня. Не нужно было удалять какие-либо временные файлы или что-либо еще.

да, это немного неудобно, но меньшее из всех зол, я думаю.

0
ответ дан Prime By Design 1 March 2019 в 14:36
поделиться

У меня была проблема, которая не обновляет файл разработчика файла функции. Я смог устранить ту проблему путем выполнения ниже обходного решения, и теперь мои разработчики файла функции становятся обновленными. Инструменты-> SpecFlow-> Общий-> И Включенный specflow единственный генератор файла.

версия Specflow - 2.2.1 Visual Studio 2017 и 2019

0
ответ дан 27 November 2019 в 19:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: