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.