web-dev-qa-db-fra.com

VS 2017 ne découvrant pas les tests sur .NET Core

quelqu'un peut-il m'aider à faire en sorte que VS2017 fonctionne avec des projets de test .NET Core? 

J'ai essayé de créer des projets de test unitaire MSTest et xUnit pour .NET Core à partir des modèles VS 2017. Ni l'un ni l'autre ne fonctionne dans l'explorateur de test (non découvert), cependant l'exécution de dotnet test à partir du dossier de projet fonctionne correctement.

Étapes à suivre pour reproduire:

  1. Créer un nouveau projet dans VS 2017
  2. Choisissez le modèle Unit Test Project (.NET Core) ou xUnit Test Project (.NET Core)
  3. Implémenter des tests unitaires arbitraires
  4. Construire la solution
  5. Allez dans l'explorateur de texte et essayez de Run All 

À ce stade, la fenêtre de sortie devrait vous indiquer que 0 test a été découvert.

.csproj fichier:

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

  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
  </ItemGroup>

</Project>

Si j'ai essayé de créer un projet de test d'unité MSTest à partir du modèle qui cible .NET Framework (complet, pas .NET Core), cela a fonctionné.

Des idées?

18
valorl

Finalement, le problème a été résolu en changeant mon système PATH env. variable de C:\Program Files\dotnet\ à C:\Progra~1\dotnet\, comme indiqué dans Impossible d'effectuer des tests XUnit avec Visual Studio 2017 RC

Merci à Alexey pour l'avoir suggéré dans les commentaires :)

14
valorl

Je pense avoir eu le même comportement. Essayez de construire votre solution afin que VS puisse découvrir vos tests. Sinon, merci de partager votre fichier de tests csproj pour vous assurer de référencer les bons packages. Le mien est: 

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
  </ItemGroup>

</Project>

UPDATE: J'ai joué un peu et il semble que VS ne puisse pas trouver les tests sans <OutputType>Exe</OutputType>

UPDATE 2: Essayez également d'ajouter ce qui suit à csproj car je vois que VS ajoute dans certains cas.

<ItemGroup>
  <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>
5
Andrii Litvinov

VS 2017 n'a pas découvert les tests unitaires MSTest sur .NET Core.

La sortie Tests a seulement indiqué qu’elle avait découvert zéro test.

Lors de l'exécution de dotnet test MyProject.csproj -t dans une invite de commande, il est indiqué que le runtime .NET Core correct n'a pas été installé pour correspondre à la RuntimeFrameworkVersion du projet.

L'installation de la dernière mise à jour de VS 2017 et du runtime .NET Core a résolu le problème.

2
DGreen

J'ai eu le même problème. Je l'ai résolu en installant le package "Microsoft.NET.Test.Sdk" de nuget. 

1
pgoostree

J'ai également eu ce problème et le problème a été résolu en veillant à ce que mon projet et mon projet test aient la même version de l'infrastructure cible dans le fichier .csproj

<TargetFramework>netcoreapp1.0</TargetFramework>
0
coolhand

J'ai eu le même problème après la migration de project.json à csproj. Et résolu le problème en supprimant net451 framework cible et ne laissant que netcoreapp1.1. Maintenant, cela fonctionne parfaitement et à découvrir à chaque fois. 

Bien sûr, si vous avez besoin de plusieurs cibles de framework, vous ne devriez pas le faire, utilisez simplement CLI pour les tester ...

0
Flaksirus

Assurez-vous également que vous n'avez pas versions mixtes de PackageReference} dans les fichiers * .csproj lorsque vous avez plusieurs projets test et le même répertoire de sortie, ainsi que mettez à jour les packages du projet test}, en particulier MSTest. TestAdapter ainsi que MSTest.TestFramework

0
CodingYourLife

Cela peut être dû à des paramètres de projet incohérents pour Processor Architecture. La cible du projet de test doit correspondre à l'architecture de processeur par défaut du test.

Vérifier https://stackoverflow.com/a/47454276/2700303

0
ByteArtisan