Compartir a través de


Pruebas unitarias para métodos privados, internos y amigos

Normalmente, los métodos marcados como privados, internos y de confianza no son visibles desde fuera de la clase que contiene esos métodos. Sin embargo, las herramientas de Visual Studio proporcionan a las pruebas unitarias la capacidad de tener acceso a ellos, aunque el archivo de prueba unitaria sea una clase independiente.

Aunque no es necesario modificar el archivo de prueba unitaria para permitir estos métodos, hay algunas decisiones que puede tomar sobre cómo se tratan los métodos internos y de confianza. En este artículo se explican esas decisiones y se describe lo que ocurre en el proyecto al probar métodos privados, internos y de confianza.

Nota

Para ver instrucciones acerca de cómo crear pruebas unitarias, vea Crear y ejecutar pruebas unitarias para código existente.

Nota

Los descriptores de acceso están desusados en Visual Studio 2010 y es posible que no se incluyan en versiones futuras de Visual Studio.

Métodos privados

Al crear una prueba unitaria para un método privado, se agrega una carpeta Test References al proyecto de prueba y, a esa carpeta, se agrega un descriptor de acceso. También se hace referencia al descriptor de acceso en la lógica del método de prueba unitaria.

Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value
Dim target As Form1_Accessor = New Form1_Accessor() ' TODO: Initialize to an appropriate value

Este descriptor de acceso permite que la prueba unitaria llame a métodos privados del código que se está probando.

Puede crear manualmente un descriptor de acceso o recrear uno que se haya eliminado. Para ello, haga clic con el botón secundario en el código que está probando, apunte a Crear descriptor de acceso privado y seleccione el proyecto de prueba que requiera el descriptor de acceso.

Métodos internos o de confianza

Al crear una prueba unitaria para un método interno en C# o para un método de confianza en Microsoft Visual Basic, aparece un cuadro de diálogo que permite elegir entre tener acceso a los métodos internos con el descriptor de acceso privado o con InternalsVisibleToAttribute.

Nota

Es posible que el cuadro de diálogo no aparezca si el atributo ya se ha agregado al proyecto.

Si decide tener acceso a los métodos internos con InternalsVisibleToAttribute, el atributo se agrega al archivo AssemblyInfo.cs. El atributo pone los métodos internos del código que se está probando a disposición del proyecto de prueba. Se agrega un nuevo atributo a cada proyecto de prueba para el que se elija esta opción.

Si decide tener acceso a los métodos internos con el descriptor de acceso privado, verá el mismo comportamiento que se describió anteriormente en este artículo para los métodos privados: se agrega una carpeta Test References al proyecto de prueba, se agrega a esa carpeta un descriptor de acceso y se hace referencia al descriptor de acceso en la lógica del método de prueba unitaria. En este caso, el descriptor de acceso privado proporciona acceso tanto a los métodos internos como a los métodos privados que se está probando.

Si decide agregar InternalsVisibleToAttribute al proyecto, aún puede crear pruebas unitarias para los métodos internos y tener acceso a ellos con el descriptor de acceso privado, en su lugar. No obstante, debe hacerlo al crear la prueba unitaria. En el cuadro de diálogo Crear prueba unitaria, haga clic en Configuración. En el cuadro de diálogo Configuración de generación de pruebas, desactive la casilla Aceptar atributo InternalsVisibleTo.

Vea también

Conceptos

Anatomía de las pruebas unitarias

Pruebas unitarias y C++

Pruebas unitarias para métodos genéricos