Eu tenho uma biblioteca de classes simples dotnet com um único método de teste XUnit:
TestLib.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.SDK" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.console" Version="2.4.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xunit.runners" Version="2.0.0" />
</ItemGroup>
</Project>
BasicTest.cs:
using Xunit;
namespace TestLib
{
public class BasicTest
{
[Fact(DisplayName = "Basic unit test")]
[Trait("Category", "unit")]
public void TestStringHelper()
{
var sut = "sut";
var verify = "sut";
Assert.Equal(sut, verify);
}
}
}
Se eu entrar no projeto na CLI e digitar dotnet build
as compilações do projeto. Se eu digitar dotnet test
, recebo o seguinte:
C:\git\Testing\TestLib> dotnet test
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build started, please wait...
C:\git\Testing\TestLib\TestLib.csproj : warning NU1701: Package 'xunit.runner.visualstudio 2.4.1' was restored using '.NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Build completed.
Test run for C:\git\Testing\TestLib\bin\Debug\netstandard2.0\TestLib.dll(.NETStandard,Version=v2.0)
Microsoft (R) Test Execution Command Line Tool Version 16.0.0-preview-20181205-02
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
Unable to find C:\git\Testing\TestLib\bin\Debug\netstandard2.0\testhost.dll. Please publish your test project and retry.
Test Run Aborted.
O que preciso mudar para que o teste seja executado?
Se ajudar, o VS Code também não está exibindo os testes em seu explorador de teste.
c#
unit-testing
.net-core
xunit.net
Matt W
fonte
fonte
Respostas:
No meu caso, o problema era que eu estava visando o .NET Core 2.0 e mudar para o .NET Core 2.1 resolveu o problema. No entanto, eu estava usando o Microsoft.NET.Test.SDK v16.4.0 em vez do 15.9.0.
fonte
Instalando
Microsoft.NET.Test.Sdk
pacote do gerenciador de pacotes nuget resolveu meu problema.fonte
xunit
,xunit.runner.visualstudio
eMicrosoft.NET.Test.Sdk
ao projeto, ainda o mesmo resultado. Acho que ainda há outro fator em jogo ...netstandard2.0
projeto em vez de umnetcoreapp2.2
projeto. Assim que mudei para o último, funcionou. Os únicos pacotes nuget que eu precisava eramxunit
,xunit.runner.visualstudio
eMicrosoft.NET.Test.Sdk
.dotnet clean
Eu criei uma biblioteca de classes e tentei usar o pacote XUnit NuGet nela.
O que eu deveria ter feito era criar um projeto XUnit usando este comando:
dotnet new xunit -n TestProject
Eu achei esta página útil .
fonte
--force
para forçá-lo a reconstruir o projeto como um projeto de teste xUnit. De acordo com o comentário de @Manfred, você precisará atualizar / adicionar novamente quaisquer referências de projeto que você tinha nesse projeto.xunit.runner.visualstudio
que você pode encontrar em nuget.org/packages/xunit.runner.visualstudioNo meu caso, o problema é que tenho um projeto de extensão para o xunit. Também existe um projeto de teste para testar as extensões. Quando executei
dotnet test
minha solução, meu projeto de extensão também foi escolhido como um projeto de teste de unidade (levei algum tempo para perceber isso). A razão para isso é que ele faz referência a alguns pacotes xunit. Um desses pacotes xunit define automaticamente a<IsTestProject>true</IsTestProject>
propriedade em seu arquivo csprj. Na verdade, isso é bom, pois 99,99% dos projetos que fazem referência ao xunit são, na verdade, testes de unidade. Eu poderia finalmente resolver isso definindo explicitamente<PropertyGroup> ... <IsTestProject>false</IsTestProject> ... </PropertyGroup>
Manualmente no meu arquivo csproj. Então o problema foi embora.
fonte
Isso aconteceu comigo depois de atualizar o Microsoft.NET.Test.Sdk de v16.2.0 para v16.4.0 com
<TargetFramework>netcoreapp2.0</TargetFramework>
. Atualizar para<TargetFramework>netcoreapp3.0</TargetFramework>
resolver o problema para mim.fonte
Corrigido com a instalação
xunit.runner.visualstudio
.fonte
Se você estiver usando o xUnit, certifique-se de que seu tipo de projeto não seja tão netstanderd. Como o xUnit não oferece suporte ao netstanderd , altere-o para coreapp2.0 ou outros.
fonte
Já encontrei isso algumas vezes e sempre esqueço o que está acontecendo. Mais recentemente, tive:
Pacotes para meu projeto de teste:
Eu estava vendo:
E tudo que eu precisava fazer era adicionar ao meu projeto de teste o pacote nuget ausente: "Microsoft.NET.Test.SDK"
Tudo estava de volta ao normal neste momento.
fonte
Achei um problema de compatibilidade muito interessante com uma versão. Atualizei meu código como prática normal e mudei para xUnit.runner.visualstudio 2.4.2. Ele parou de funcionar para .Net Core 3.1. Tive que fazer o downgrade para 2.4.1 e começou a funcionar novamente.
Informações adicionais após um dos meus comentários.
O pacote xunit.runner.visualstudio versões <= 2.4.1 inclui uma referência a Microsoft.NET.Test.Sdk. As versões posteriores não, então você precisa adicionar a referência ao seu projeto.
Consulte stackoverflow.com/a/63786758/3248302
fonte
xunit.runner.visualstudio
as versões <= 2.4.1 incluem uma referência aMicrosoft.NET.Test.Sdk
. As versões posteriores não, então você precisa adicionar a referência ao seu projeto. Consulte stackoverflow.com/a/63786758/3248302 .Eu estava construindo um projeto de teste netcoreapp2.2 e, em seguida, tentando executar a
dotnet vstest
partir da pasta bin. Percebi que as DLLs de teste da Microsoft de:<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
não estavam sendo enviados para minha pasta bin. Em vez de apenas construir, executei uma publicação que incluía as DLLs necessárias na pasta de saída e, então, consegui executar a
dotnet vstest
partir daí.fonte
Se você tiver como objetivo o netstandard2.0, isso não funcionará. Se estiver usando o .NET Core. certifique-se de que o .csproj contém as seguintes linhas:
<TargetFramework>netcoreapp3.0</TargetFramework>
e também contém o pacote
Microsoft.NET.Test.Sdk
fonte
mesmo problema que enfrentei para o projeto Nunit (.net core 3.1). Eu estava usando o Microsoft.NET.Test.SDK v16.6.1, fiz o downgrade da versão para 15.9.0. E começou a funcionar
fonte
Encontrou esse erro, a causa raiz foi que os testes estavam atingindo o comprimento máximo para um caminho do Windows (MAX_PATH), que é definido como 260 caracteres.
fonte
Este erro pode ocorrer se você atualizar
xunit.runner.visualstudio
para uma versão superior a 2.4.1. Versões até e incluindo 2.4.1 incluem uma referência aMicrosoft.NET.Test.Sdk
mas as posteriores não, então você precisa incluir a referência em seu próprio projeto.Curiosamente, descobri que o NCrunch ainda executou meus testes sem a referência adicional, embora eu não pudesse executá-los por meio da CLI.
fonte
Se você estiver executando um projeto por clonagem, a solução é instalar o Microsoft.NET.Test.Sdk. Como: Ferramentas> Gerenciador de Pacotes Nuget> Gerenciar Pacotes Nuget para Solução ...> Pesquise Microsoft.NET.Test.Sdk e instale para seu projeto de teste.
fonte
Isso também pode ser causado por uma tentativa inadvertida de executar um projeto que não seja de teste. Isso geralmente acontece quando o filtro de arquivos de teste é muito largo.
fonte
Recebi este erro, ao tentar depurar um teste de unidade. Abaixo estão as etapas que tentei.
Yay!!! funcionou :-) Nunca deixe de tentar a última etapa ;-) Espero que isso ajude alguém como eu.
fonte
Tive que adicionar
Microsoft.TestPlatform.TestHost
para conseguirtesthost.dll
. Descobri que nesta resposta https://github.com/dotnet/sdk/issues/7171#issuecomment-261506546fonte
No meu caso, foi necessário incluir uma referência ao módulo MsTest.TestAdapter usando o nuget.
Um novo projeto com MSTest.TestFramework e Microsoft.Net.Test.Sdk não foi suficiente para executar um único teste de unidade.
Percebi, no meu caso, que estava usando um projeto de teste visando o .NET framework 4.8 e não o .NET core. Embora eu acredite fortemente que essa correção pode se aplicar a essa plataforma também
fonte