c# internalsvisibleto

c# - InternalsVisibleTo no funciona



(4)

Inserté la línea:

[assembly: InternalsVisibleTo("MyTests")]

dentro de mi proyecto bajo prueba ( Properties/AssemblyInfo.cs ) donde MyTests es el nombre del proyecto Unit Test. Pero por alguna razón todavía no puedo acceder a los métodos internos del proyecto de prueba de la unidad.

¿Alguna idea sobre lo que estoy haciendo mal?


Aún necesita su proyecto de prueba para hacer referencia a su proyecto principal.

Esto puede ser fácil pasar por alto y si no tiene un código de prueba existente, esto puede parecer que el Visible Interno A no está funcionando.


En mi caso, estaba codificando a una interfaz. Como las interfaces solo pueden especificar propiedades públicas, las propiedades internas no estaban presentes en la interfaz.

¡Asegúrate de no estar haciendo lo mismo que yo!

Cambié:

Assert.IsNotNull((exportFileManager)?.ThumbnailFileExporter);

A:

Assert.IsNotNull((exportFileManager as ExportFileManager)?.ThumbnailFileExporter);


Si su ensamblaje está firmado con un nombre fuerte, mire esta respuesta .

De lo contrario, compruebe que el nombre del ensamblaje de prueba sea realmente "MyTests.dll" (no tiene que coincidir con el nombre del proyecto, aunque sí lo hará de forma predeterminada).


Vamos a descomponerlo un poco ya que muchos de nosotros hemos experimentado esta ligera confusión en el pasado ...

El conjunto A tiene su clase interna. El ensamblaje B tiene sus pruebas unitarias.

Desea otorgarle a la parte interna de la visibilidad de la asamblea A una asamblea B.

Debe colocar el atributo de ensamblaje InternsalVisibleTo dentro del conjunto A y otorgar acceso al conjunto B.