unit testing - tipos - Cualquier forma de acelerar las pruebas unitarias en Visual Studio 2015 para UWP
tipos de pruebas unitarias (1)
Al probar una biblioteca de clases de Windows Universal (.NET 4.6) en Visual Studio 2015, el tiempo requerido en el ciclo "red-> green-> refactor" es bastante largo. Mi proyecto de prueba es solo el proyecto estándar "Prueba de unidad de MSTest". Incluso en el escenario más simple de una nueva solución, un nuevo tema y proyectos de prueba, y un método básico int Add(int n1, int n2)
, se tardan entre 8 y 15 segundos. Este es el momento (después de hacer un pequeño cambio de código) de hacer clic en "ejecutar prueba" hasta que se muestre el aprobado / no aprobado.
En mi máquina (Win 10 pro) realizando el mismo experimento, pero con una solución basada en WPF rinde aproximadamente 1-2 segundos.
En el escenario UWP, el tiempo real de la prueba se muestra como 79 ms. El resto del tiempo es compilar e implementar el contenedor de la aplicación de prueba unitaria.
¿Hay alguna manera de acelerar significativamente TDD con UWP?
La razón por la que el ciclo TDD lleva tanto tiempo se debe a que todo el código UWP debe ejecutarse en un AppContainer, y eso requiere un empaque y despliegue que es lento.
La solución a este problema consiste en separar todo el código que pueda en un proyecto diferente que no necesite ejecutarse en un AppContainer y luego probar ese proyecto.
La solución para esto es usar una biblioteca de clases portátil para su lógica de aplicación en lugar de una biblioteca de clases UWP. Encontrará la biblioteca de clases portátil en el nuevo diálogo del proyecto:
La configuración predeterminada debería funcionar:
Luego debe agregar una referencia del UWP a la biblioteca portátil para que pueda consumirla. Para probar la biblioteca portátil, utilice un proyecto de prueba de unidad no UWP regular:
Nota: para que esto funcione, deberá cambiar el marco de destino del proyecto de prueba unitaria de 4.5.2 (que es el valor predeterminado) a 4.6.
Cualquier prueba unitaria que ejecute desde el proyecto de prueba de la unidad regular se ejecutará lo más rápido posible porque no es necesario que se ejecute en el AppContainer. Probé esto y la velocidad del circuito interno fue excelente. ¡Espero que ayude!