#.net #selenium #testing #nunit #specflow
#.net #селен #тестирование #nunit #specflow
Вопрос:
Я создал проект библиотеки классов .net standard 2.1 с реализацией specflow и selenium. Я добавил только простые тесты входа в систему, чтобы убедиться, что он работает. Это информация из файла json.
Я добавил пакет Microsoft.NET.Test.Sdk, который не решил мою проблему. Я добавил Microsoft.TestPlatform.TestHost, это тоже не решило мою проблему.
Я новичок, поэтому я не совсем уверен, что еще мне нужно опубликовать здесь, чтобы получить некоторую помощь, которая более чем приветствуется. При необходимости я могу предоставить дополнительную информацию, заранее спасибо, ребята.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<OutputType>Library</OutputType>
</PropertyGroup>
<ItemGroup>
<SpecFlowObsoleteCodeBehindFiles Remove="SharedFeaturesLogin.feature.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="BoDi" Version="1.5.0" />
<PackageReference Include="Cucumber.Messages" Version="6.0.2" />
<PackageReference Include="DotNetSeleniumExtras.WaitHelpers" Version="3.11.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1" />
<PackageReference Include="Microsoft.TestPlatform.TestHost" Version="16.9.1" />
<PackageReference Include="NUnit" Version="3.13.1" />
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
<PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" />
<PackageReference Include="Selenium.Support" Version="3.141.0" />
<PackageReference Include="Selenium.WebDriver" Version="3.141.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="89.0.4389.2300" />
<PackageReference Include="SpecFlow" Version="3.7.38" />
<PackageReference Include="SpecFlow.NUnit" Version="3.7.38" />
<PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.7.38" />
</ItemGroup>
<ItemGroup>
<Compile Update="SharedFeaturesLogin.feature.cs">
<DependentUpon>%(Filename)</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<SpecFlowFeatureFiles Update="SharedFeaturesLogin.feature">
<Visible>$(UsingMicrosoftNETSdk)</Visible>
<CodeBehindFile>%(RelativeDir)%(Filename).feature$(DefaultLanguageSourceExtension)</CodeBehindFile>
</SpecFlowFeatureFiles>
</ItemGroup>
</Project>
Это ошибка, которую я получаю :
Unable to find C:PATHbinDebugnetstandard2.1testhost.dll. Please publish your test project and retry.
Unable to find C:PATHbinDebugnetstandard2.1testhost.dll. Please publish your test project and retry.
Ответ №1:
Тестовый проект не может быть стандартом .NET. .NET Standard — это спецификация API, а не среда выполнения / платформа. Может быть и, вероятно, будет разное поведение для .NET Framework и .NET Core для одного и того же API.
Подробнее об этом в объяснении от xUnit: https://xunit.net/docs/why-no-netstandard
Чтобы решить вашу проблему, пожалуйста, выберите real target framework. Поскольку сейчас у вас есть .NET Standard 2.1, это должно быть, вероятно, .NET Core 3.0 или более поздней версии.
Итак, это должно выглядеть так:
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<OutputType>Library</OutputType>
</PropertyGroup>
Комментарии:
1. Спасибо за объяснение! На самом деле я создал 3 проекта .NET Core 3.1, которые используют этот общий проект, который я установил как .NET Standard 2.1. Я планировал использовать этот общий проект для общих функций, перехватов, инициализации драйверов и т. Д. поэтому у меня нет удвоенного кода. Но я следил за тем, чтобы этот общий проект также должен быть .NET Core 3.1, а не . ЧИСТЫЙ стандарт 2.1.
2. Публикуя здесь, решил ли я свою проблему позже. Еще раз спасибо, Андреас.
3. У меня есть все это, и я все еще получаю ошибку bla bla
......testhost.dll. Please publish your test project and retry.
? 🙁4. Правильно.. ну, мне пришлось установить
Microsoft.NET.Test.Sdk
, который также устанавливаетсяMicrosoft.NET.Test.Sdk
независимо от того, чтоNUnit3TestAdapter
установлено. Я верю, что фреймворк — это все, что требуется.5. сработало для меня. мое тестовое решение nunit было указано на .netstandard2.1, изменено, как указано выше