Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se muestra cómo usar la función Generar a partir de uso, que admite el desarrollo basado en pruebas.
El desarrollo primero en pruebas es un enfoque para el diseño de software en el que primero escribe pruebas unitarias basadas en especificaciones de producto y, a continuación, escribe el código fuente necesario para que las pruebas se realicen correctamente. Visual Studio admite el desarrollo dirigido por pruebas mediante la generación de nuevos tipos y miembros en el código fuente al referenciarlos por primera vez en los casos de prueba, antes de definirlos.
Visual Studio genera los nuevos tipos y miembros con una interrupción mínima del flujo de trabajo. Puede crear códigos auxiliares para tipos, métodos, propiedades, campos o constructores sin abandonar su ubicación actual en el código. Al abrir un cuadro de diálogo para especificar opciones para la generación de tipos, el foco vuelve inmediatamente al archivo abierto actual cuando se cierra el cuadro de diálogo.
La característica Generar a partir de uso se puede usar con marcos de pruebas que se integran con Visual Studio. En este tema, se muestra el marco de pruebas unitarias de Microsoft.
Nota:
Las instrucciones de este artículo muestran la versión más reciente de la experiencia de desarrollo interactiva (IDE) disponible en Visual Studio. El equipo puede mostrar nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario. Puede que esté usando una versión diferente de Visual Studio u otra configuración del entorno. Para obtener más información, consulte Personalizar el IDE.
Crear un proyecto de biblioteca de clases de Windows y un proyecto de prueba
En C# o Visual Basic, cree un nuevo proyecto de biblioteca de clases de Windows . Asígnele el
GFUDemo_VB
oGFUDemo_CS
nombre, en función del idioma que use.En el Explorador de soluciones, haga clic con el botón derecho en el icono de la solución en la parte superior y elija Agregar>nuevo proyecto.
Cree un nuevo proyecto de pruebas unitarias (.NET Framework).
Agregar una referencia al proyecto biblioteca de clases
En el Explorador de soluciones, en el proyecto de prueba unitaria, haga clic con el botón derecho en la entrada Referencias y elija Agregar referencia.
En el cuadro de diálogo Administrador de referencias , seleccione Proyectos y, a continuación, seleccione el proyecto de biblioteca de clases.
Elija Aceptar para cerrar el cuadro de diálogo Administrador de referencias .
Guarde la solución. Ahora ya está listo para empezar a escribir pruebas.
Generación de una nueva clase a partir de una prueba unitaria
El proyecto de prueba contiene un archivo denominado UnitTest1. Haga doble clic en este archivo en el Explorador de soluciones para abrirlo en el editor de código. Se ha generado una clase de prueba y un método de prueba.
Busque la declaración de la clase
UnitTest1
y cámbiela porAutomobileTest
.Nota:
IntelliSense ahora proporciona dos alternativas para la finalización de instrucciones de IntelliSense: modo de finalización y modo de sugerencia. Use el modo de sugerencia para situaciones en las que se usan clases y miembros antes de definirlos. Cuando se abre una ventana de IntelliSense , puede presionar Ctrl+Alt+Space para alternar entre el modo de finalización y el modo de sugerencia. Consulte Uso de IntelliSense para obtener más información. El modo de sugerencia le ayudará cuando escriba
Automobile
en el paso siguiente.Busque el
TestMethod1()
método y cámbielo porDefaultAutomobileIsInitializedCorrectly()
. Dentro de este método, cree una nueva instancia de una clase denominadaAutomobile
, como se muestra en las capturas de pantalla siguientes. Aparece un subrayado ondulado, que indica un error en tiempo de compilación, y una bombilla de error de Acciones rápidas en el margen izquierdo o directamente debajo de la línea ondulada si se sitúa el cursor encima.Elija o haga clic en la bombilla Acciones rápidas . Verá un mensaje de error que indica que el tipo
Automobile
no está definido. También se presentan algunas soluciones.Haga clic en Generar nuevo tipo para abrir el cuadro de diálogo Generar tipo . Este cuadro de diálogo proporciona opciones que incluyen la generación del tipo en un proyecto diferente.
En la lista Proyecto , haga clic en GFUDemo_VB o GFUDemo_CS para indicar a Visual Studio que agregue el archivo al proyecto de biblioteca de clases en lugar del proyecto de prueba. Si aún no está seleccionado, elija Crear nuevo archivo y asígnelo Automobile.cs o Automobile.vb.
Haga clic en Aceptar para cerrar el cuadro de diálogo y crear el nuevo archivo.
En el Explorador de soluciones, busque en el nodo de proyecto GFUDemo_VB o GFUDemo_CS para comprobar que el nuevo archivo de Automobile.vb o Automobile.cs está ahí. En el editor de código, el foco todavía está en
AutomobileTest.DefaultAutomobileIsInitializedCorrectly
, lo que le permite seguir escribiendo la prueba con un mínimo de interrupción.
Generar código auxiliar de propiedad
Supongamos que la especificación del producto indica que la Automobile
clase tiene dos propiedades públicas denominadas Model
y TopSpeed
. Estas propiedades se deben inicializar con los valores predeterminados de "Not specified"
y -1
por el constructor predeterminado. La siguiente prueba unitaria comprobará que el constructor predeterminado establece las propiedades en sus valores predeterminados correctos.
Agregue la siguiente línea de código al
DefaultAutomobileIsInitializedCorrectly
método de prueba.Dado que el código hace referencia a dos propiedades no definidas en
Automobile
, aparece un subrayado ondulado bajoModel
yTopSpeed
. Sitúe el cursor encima deModel
, haga clic en la bombilla de error de Acciones rápidas y, después, elija Generar propiedad "Automobile.Model" .Genere código auxiliar para la propiedad
TopSpeed
de la misma manera.En la
Automobile
clase , los tipos de las nuevas propiedades se deducen correctamente del contexto.
Generar una plantilla para un nuevo constructor
Ahora crearemos un método de prueba que generará un stub de constructor para inicializar las propiedades Model
y TopSpeed
. Más adelante, vas a agregar más código para completar la prueba.
Agregue el siguiente método de prueba adicional a la
AutomobileTest
clase .Haga clic en la bombilla de error de Acciones rápidas situada debajo de la línea roja ondulada y, luego, haga clic en Generar constructor en "Automobile" .
En el archivo de clase
Automobile
, observe que el nuevo constructor ha examinado los nombres de las variables locales que se utilizan en la llamada al constructor, ha encontrado propiedades con los mismos nombres en la claseAutomobile
y ha proporcionado código en el cuerpo del constructor para almacenar los valores de los argumentos en las propiedadesModel
yTopSpeed
.Después de generar el nuevo constructor, aparece un subrayado ondulado bajo la llamada al constructor predeterminado en
DefaultAutomobileIsInitializedCorrectly
. El mensaje de error indica que laAutomobile
clase no tiene ningún constructor que tome cero argumentos. Para generar un constructor predeterminado explícito que no tenga parámetros, haga clic en la bombilla de error Acciones rápidas y, a continuación, haga clic en Generar constructor en "Automobile".
Generar un código auxiliar para un método
Supongamos que la especificación indica que un nuevo Automobile
se puede colocar en un IsRunning
estado si sus Model
propiedades y TopSpeed
se establecen en algo distinto de los valores predeterminados.
Agregue las líneas siguientes al
AutomobileWithModelNameCanStart
método .Haga clic en la bombilla de error de Acciones rápidas de la llamada al método
myAuto.Start
y luego en Generar método "Automobile.Start" .Haga clic en la bombilla Acciones rápidas de la
IsRunning
propiedad y, a continuación, haga clic en Generar propiedad "Automobile.IsRunning".La
Automobile
clase contiene ahora un método denominadoStart()
y una propiedad denominadaIsRunning
.
Ejecución de las pruebas
En el menú Prueba , elija Ejecutar>todas las pruebas.
El comando Ejecutar>todas las pruebas ejecuta todas las pruebas de todos los marcos de pruebas que se escriben para la solución actual. En este caso, hay dos pruebas y ambas fallan, según lo previsto. Falla la
DefaultAutomobileIsInitializedCorrectly
prueba porque la condiciónAssert.IsTrue
devuelveFalse
. La pruebaAutomobileWithModelNameCanStart
falla porque el métodoStart
de la claseAutomobile
lanza una excepción.La ventana Resultados de la prueba se muestra en la siguiente ilustración.
En la ventana Resultados de pruebas, haga doble clic en cada fila de resultados de prueba para ir a la ubicación de cada prueba.
Implementación del código fuente
Agregue el código siguiente al constructor predeterminado para que las
Model
propiedades ,TopSpeed
yIsRunning
se inicialicen en sus valores predeterminados correctos de"Not specified"
,-1
yFalse
(ofalse
para C#).Cuando se llama al método
Start
, debe establecer el indicadorIsRunning
en verdadero solo si la propiedadModel
oTopSpeed
se establecen en un valor diferente de su valor predeterminado. ElimineNotImplementedException
del cuerpo del método y agregue el siguiente código.
Vuelva a ejecutar las pruebas.
En el menú Prueba , seleccione Ejecutar y, a continuación, haga clic en Todas las pruebas.
Esta vez las pruebas son correctas. La ventana Resultados de la prueba se muestra en la siguiente ilustración.