Неожиданно не удалось выполнить задачу «GenerateFeatureFileCodeBehindTask». Система.Исключение: Поставщик модульных тестов уже настроен

#c# #asp.net-core #specflow

Вопрос:

Я установил некоторые пакеты specflow в .NET Core 3.1

 <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="FluentAssertions" Version="6.1.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
    <PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.9.22" />
    <PackageReference Include="SpecFlow.xUnit" Version="3.9.22" />
    <PackageReference Include="SpecRun.SpecFlow" Version="3.9.7" />
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Hooks" />
  </ItemGroup>    

</Project>
 

Но когда я строю, я получил эту ошибку:

введите описание изображения здесь

 Severity    Code    Description Project File    Line    Suppression State
Error   MSB4018 The "GenerateFeatureFileCodeBehindTask" task failed unexpectedly.
System.Exception: Unit test Provider already set.
   at TechTalk.SpecFlow.UnitTestProvider.UnitTestProviderConfiguration.UseUnitTestProvider(String unitTestProviderName)
   at TechTalk.SpecFlow.xUnit.Generator.SpecFlowPlugin.GeneratorPlugin.Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) in D:a1sPluginsTechTalk.SpecFlow.xUnit.Generator.SpecFlowPluginGeneratorPlugin.cs:line 14
 

Ответ №1:

SpecRun.SpecFlow и SpecFlow.NUnit не может быть установлен одновременно в проекте SpecFlow. Они используются для настройки того, какой модульный тестовый запуск используется.

Я предполагаю, что при создании проекта SpecFlow вы выбрали SpecFlow Runner. Это добавляет пакет NuGet SpecRun.SpecFlow.

И по мере того, как вы добавляете затем вручную поток спецификаций.Пакет NUnit, вы получаете эту ошибку. Вы можете выбрать NUnit в мастере проектов, чтобы с самого начала создать проект с помощью NUnit.

Такое поведение существует со времен SpecFlow 3.0.

Документы для поставщика модульных тестов: https://docs.specflow.org/projects/specflow/en/latest/Installation/Unit-Test-Providers.html