Estoy desarrollando con Grails. Dado que el marco de trabajo arrancará datos y un contexto de primavera completamente enrojecido, me parece que escribo muchas pruebas de integración para servicios. Permítanme reformular eso: me parece que no escribo pruebas de unidad para servicios, solo pruebas de integración. ¿Es una mala idea? El único inconveniente que veo es que mis pruebas tardan un poco más en ejecutarse.Integration vs Unit Testing
Uso pruebas unitarias en controladores, como en un controlador estoy probando los diversos flujos de aplicaciones, tipos de resultados, lógica de redirección, etc. Pero la mayoría de las pruebas que escribo son pruebas de integración. Esto parece un descanso de las pruebas J2EE tradicionales, donde se escriben principalmente pruebas unitarias.
edit- para ser claros, no estoy escribiendo pruebas de integración porque el código es tan complicado que solo lo harán las pruebas de integración. Estoy escribiendo pruebas de integración porque es más fácil probar todo junto, ya que el framework te da mucho. Me burlo de ciertas cosas, como si un servicio colabora con el acegi authenticationService, me burlo de eso. También me burlo cada vez que interactuamos con un servicio web, porque es necesario para obtener una prueba que se ejecuta sin una configuración especial.
Las pruebas de integración pueden ser más frágiles que las pruebas unitarias. Si se encuentra escribiendo principalmente pruebas de integración, considere refaccionar su proyecto para que pueda ser probado en unidades más fácilmente. Si su código está escrito para que se pueda probar, puede descubrir que las pruebas unitarias son más fáciles de escribir que las pruebas de integración y que son más estables (menos propensas a romperse). Las pruebas de integración son buenas para probar las interacciones entre los componentes del sistema, pero no siempre proporcionan una cobertura de código adecuada, por lo que no son un sustituto de las pruebas unitarias. –