test - Pruebas unitarias de métodos protegidos C#
testing in c# visual studio (5)
Puede usar la reflexión para invocar métodos privados y protegidos.
Vea aquí para más:
Vengo del mundo Java EE pero ahora estoy trabajando en un proyecto .Net. En Java, cuando quise probar un método protegido, fue bastante fácil, bastaba con tener la clase de prueba con el mismo nombre de paquete. ¿Hay algo similar para C #? ¿Hay alguna buena práctica para probar las unidades de los métodos protegidos? Solo encontré marcos y personas que decían que debería probar solo los métodos públicos. Debería ser posible hacerlo sin ningún marco ...
Muchas gracias.
Puede usar la clase PrivateObject para acceder a todos los métodos / campos privados / protegidos.
Puede exponer los métodos protegidos en una nueva clase que hereda la clase que desea probar.
public class ExposedClassToTest : ClassToTest
{
public bool ExposedProtectedMethod(int parameter)
{
return base.ProtectedMethod(parameter);
}
}
Puede heredar la clase que está probando en su clase de prueba.
public class Test1 : SomeClass
{
Asert.AreEqual(1, SomeClass.ProtectedMethod());
}
Otra opción es usar internal
para estos métodos y luego usar InternalsVisibleTo
para permitir que su ensamblaje de prueba tenga acceso a estos métodos. Esto no impide que los métodos sean consumidos por otras clases en el mismo ensamblaje, pero evita que otros ensamblados que no son su ensamblaje de prueba accedan a ellos.
Esto no le da tanta encapsulación y protección, pero es bastante sencillo y puede ser útil.
Agregar a AssemblyInfo.cs
en el ensamblado que contiene los métodos internos
[assembly: InternalsVisibleTo("TestsAssembly")]