Не удается найти testhost.dll Пожалуйста, опубликуйте свой тестовый проект и повторите попытку

#.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, изменено, как указано выше