32 votes

Comment exécutez-vous des tests unitaires pour une infrastructure cible spécifique dans Visual Studio 2017?

Je suis vraiment aimer le nouveau .csproj format. Il est donc beaucoup mieux que ce que redouté (limitée) project.json.

Cependant, il y a une chose que je suis en train de travailler. J'ai fusionné mes (nombreux) projets de test en une seule multi-projet ciblé.

<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>

Mais, il ne semble pas être des outils dans l'Explorateur de tests dans Visual Studio pour sélectionner le framework cible - il toujours juste exécute la première. J'ai trouvé une solution de contournement: pour ajouter un <TargetFramework> élément avec un cadre spécifique...

<TargetFramework>net35</TargetFramework>

Mais, est-il possible de choisir la cible cadre sans avoir recours à de la main d'édition de la MSBuild (.csproj) fichier? Je suis à la recherche d'une option dans l'interface graphique pour ce faire - en particulier donc je n'ai pas à vous rappeler de modifier l' .csproj le fichier pour passer des cadres avant le débogage d'un test ou de se souvenir d'avoir enlever cette ligne avant la sortie.

5voto

Andrii Litvinov Points 6868

Je sais que la question est sur VS, mais je trouve utile que lorsque le ciblage de multiples cadres de dotnet tests commande va lancer les tests de tous les cadres en <TargetFrameworks> noeud:

> dotnet test
...
Test run for [projectPath]\bin\Debug\netcoreapp1.1\XUnitTestProject.dll(.NETCoreApp,Version=v1.1)
...
Test run for [projectPath]\bin\Debug\net461\XUnitTestProject.dll(.NETFramework,Version=v4.6.1)
...

NCrunch peut aussi reconnaître des cibles multiples et d'exécuter des tests pour chaque cible automatiquement:

enter image description here

2voto

Michael Brown Points 114

La meilleure option est actuellement de changer l'ordre de vos frameworks cibles dans le csproj.

 <PropertyGroup>
    <TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>
 

Si vous souhaitez déboguer des tests unitaires pour le framework net45, vous devrez le changer en:

 <PropertyGroup>
    <TargetFrameworks>net45;net46;net461;net462;net47;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>
 

L'interface utilisateur pour faire cela dans Visual Studio serait relativement simple à implémenter, mais ils ne l'ont pas fait à partir de cette réponse.

0voto

John Peters Points 3662

Utilisez TargetFrameWorkVersion dans un fichier de runettings à l'aide de l'opérateur «ou».

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X