Méthodes internes de tests unitaires dans la bibliothèque VS2017 .Net Standard

Je joue actuellement avec la dernière version finale de Visual Studio 2017 en créant une bibliothèque .Net Standard 1.6. J’utilise xUnit pour tester mon code et je me demandais si vous pouviez toujours tester les méthodes internes dans VS2017.

Je me souviens que vous pourriez tous une ligne de classe AssemblyInfo.cs dans VS2015 qui permettrait aux projets spécifiés de voir les méthodes internes

[assembly:InternalsVisibleTo("MyTests")] 

Comme il n’y a pas de classe AssemblyInfo.cs dans les projets VS2017 .Net Standard, je me demandais si vous pouviez toujours tester les méthodes internes?

Selon les documents .NET pour InternalsVisibleToAtsortingbute :

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

En d’autres termes, vous pouvez simplement le placer dans votre propre fichier .cs, et cela devrait fonctionner correctement:

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

L’atsortingbut “InternalsVisibleTo” est la clé de toute sorte de “boîte blanche” (terme de la décennie, je suppose) testant pour .Net. Il peut être placé dans n’importe quel fichier c # avec l’atsortingbut “assembly” au recto. Notez que MS DOC indique que le nom de l’assembly doit être qualifié par le jeton de clé publique, s’il est signé. Parfois, cela ne fonctionne pas et il faut utiliser la clé publique complète à sa place. L’access aux composants internes est essentiel pour tester les systèmes concurrents 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 constituent essentiellement une approche de «conception pour test» du développement de programmes. Au moins, c’est comme ça que je l’ai utilisé au fil des ans.