181 votes

Tests unitaires des méthodes internes dans la bibliothèque .20 Standard de VS2017

Je suis actuellement en train de jouer avec la dernière version du Visual Studio 2017 Release Candidate en créant un .Net Standard 1.6 bibliothèque. Je suis à l'aide de xUnit à l'unité de tester mon code et je me demandais si vous pouvez toujours les tests méthodes internes dans VS2017.

Je me souviens que vous pourriez tous une ligne AssemblyInfo.cs de la classe dans VS2015 qui permettrait à des projets déterminés, pour voir les méthodes internes

[assembly:InternalsVisibleTo("MyTests")]

Comme il n'y a pas de AssemblyInfo.cs de la classe dans VS2017 .Net Standard projets, je me demandais si vous pouvez encore le test de l'unité méthodes internes?

260voto

Groo Points 19453

Selon l' .NET docs pour l' InternalsVisibleToAttribute:

L'attribut est appliqué au niveau de l'assemblage. Cela signifie qu'il peut être inclus au début du fichier de code source, ou il peut être inclus dans le fichier AssemblyInfo dans un projet Visual Studio.

En d'autres termes, vous pouvez tout simplement le placer dans votre propre nommé arbitrairement .cs fichier, et il devrait fonctionner correctement:

// some .cs file included in your project
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleTo("MyTests")]

8voto

Nick N. Points 3939

Alors que la première réponse est parfaitement bien. Si vous estimez que vous souhaitez toujours le faire dans les AssemblyInfo vous pouvez toujours choisir de ne pas générer automatiquement le fichier et de l'ajouter manuellement.

 <PropertyGroup>
   <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
 

Pour plus d'informations: https://stackoverflow.com/a/47075759/869033

5voto

kurt.matis Points 51

Le "InternalsVisibleTo" attribut est la clé de toute sorte de "boîte blanche" (le terme de la décennie, je suppose) à tester .Net. Il peut être placé dans n'importe quel fichier c# avec le "montage" de l'attribut sur le devant. Notez que MS DOCs disent que le nom de l'assemblage doit être qualifié par le jeton de clé publique, si elle est signée. Parfois, cela ne fonctionne pas et l'on doit utiliser la totalité de la clé publique à sa place. L'accès aux éléments internes est la clé de test simultané de systèmes et dans de nombreuses autres situations. Voir https://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054. Dans ce livre, Meszaros décrit une variété de styles de codage qui, en gros, de constituer une "Conception Pour le Test" de la démarche pour l'élaboration du programme. Au moins c'est la façon dont je l'ai utilisé au fil des ans.

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