Métodos internos de pruebas unitarias en VS2017.Net Biblioteca estándar


Actualmente estoy jugando con la última versión Candidata de Visual Studio 2017 creando una biblioteca.Net Standard 1.6. Estoy usando xUnit para probar mi código y me preguntaba si todavía puedes probar métodos internos en VS2017.

Recuerdo que todo lo que podría una línea AssemblyInfo.clase cs en VS2015 que permitiría a proyectos específicos ver métodos internos

[assembly:InternalsVisibleTo("MyTests")]

Ya que no hay AssemblyInfo.clase cs en proyectos estándar VS2017. Net Me preguntaba si puedes ¿todavía métodos internos de prueba unitaria?

Author: Phil Murray, 2017-02-14

2 answers

De acuerdo con . NET docs para el InternalsVisibleToAttribute:

El atributo se aplica a nivel de ensamblado. Esto significa que puede ser incluido al principio de un archivo de código fuente, o puede ser incluido en el archivo AssemblyInfo en un proyecto de Visual Studio.

En otras palabras, simplemente puede colocarlo en su propio nombre arbitrariamente.archivo cs, y debería funcionar bien:

// some .cs file included in your project
using System.Runtime.CompilerServices;
[assembly:InternalsVisibleTo("MyTests")]
 107
Author: Groo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-14 20:27:30

El atributo "InternalsVisibleTo" es clave para cualquier tipo de "caja blanca" (el término de la década, supongo) probando para .Net. Se puede colocar en cualquier archivo c# con el atributo "assembly" en el frente. Tenga en cuenta que MS DOCs dice que el nombre del ensamblador debe ser calificado por el token de clave pública, si está firmado. A veces eso no funciona y uno debe usar la clave pública completa en su lugar. El acceso a las funciones internas es clave para probar sistemas concurrentes y en muchas otras situaciones. Ver https://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054 . En este libro, Meszaros describe una variedad de estilos de codificación que básicamente constituyen un enfoque de "Diseño Para Pruebas" para el desarrollo de programas. Al menos así es como lo he usado a lo largo de los años.

 5
Author: kurt.matis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-24 21:40:21