#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