¿Cuál es la mejor herramienta, preferiblemente gratuita/de código abierto para la autogeneración de pruebas unitarias de Java? Lo sé, las pruebas unitarias no pueden cumplir realmente el mismo propósito que las pruebas unitarias TDD normales que documentan e impulsan el diseño del sistema. Sin embargo, las pruebas unitarias autogeneradas pueden ser útiles si tiene una gran base de código heredada y desea saber si los cambios que debe realizar tendrán efectos secundarios indeseados y poco claros.Pruebas unitarias de generación automática para el código Java heredado
Respuesta
No es gratis. No de código abierto. Pero he encontrado AgitarOne agitador (http://www.agitar.com/solutions/products/agitarone.html) a ser muy bueno para la generación automática de pruebas unitarias y en busca de efectos secundarios no deseados oscuros
Para ser honesto, probablemente no haría esto. Las pruebas unitarias están aisladas y no sabrás si tienes "efectos secundarios no deseados, oscuros" porque todo está separado de otras cosas que causan los efectos secundarios. Como resultado, necesita integración o prueba del sistema y que no es algo que pueda automatizar.
Elabore unas pocas pruebas de sistema de extremo a extremo de alto nivel que le den un grado de confianza y luego use pruebas de cobertura para descubrir lo que se ha perdido. La desventaja es que cuando aparezcan errores, lo hará será más difícil señalar su causa exacta, pero lo bueno es que será mucho más probable que vea los errores.
Una vez que encuentre errores, escriba pruebas unitarias solo para ellos. A medida que avance, puede usar TDD para los bits que desea refactorizar.
Sé que esto probablemente no era la respuesta que desea escuchar, pero yo he estado probando durante muchos, muchos años y este es un enfoque sólido (aunque yo casi no llamarlo el único enfoque :)
como complemento a este enfoque Recomiendo leer http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf (PDF de advertencia) y esto http://www-128.ibm.com/developerworks/java/library/j-legacytest.html No creo que realmente quiera autogenerar las pruebas – Jean
Es interesante, pero tales pruebas unitarias generados en realidad puede ser útil. Si está trabajando en una aplicación heredada, a menudo será difícil escribir las pruebas de unidad de última generación correctas.
Tales pruebas generados (si usted tiene una forma de generar ellos, por supuesto), entonces puede asegurarse que el comportamiento del código permanece intacto durante los cambios, que pueden ayudarle a refactorizar el código y escribir mejores pruebas.
Ahora sobre se autogenera. No conozco ninguna herramienta mágica, pero es posible que desee buscar la funcionalidad de JUnit para incluir algunas pruebas en javadocs de métodos. Esto te permitiría escribir algunas pruebas simples. Y sí, en realidad tiene algún valor.
En segundo lugar, puede escribir pruebas "grandes" a mano. Por supuesto, estas no serían pruebas unitarias per se (sin aislamiento, posibles efectos secundarios, etc.), pero podría ser un buen primer paso. Especialmente si tiene poco tiempo y una aplicación heredada.
Bonus Tip! Existe un excelente libro "Trabajar eficazmente con código heredado" con ejemplos en Java, incluidas las técnicas correctas para usar en tales situaciones. Desafortunadamente, tendrías que hacer algunas cosas manualmente, pero tendrías que hacer eso en algún momento de todos modos.
El plugin Coview para Eclipse (http://www.codign.com/products.html) se ve solo en el trabajo. Estoy interesado en generar pruebas que cubran todos los caminos en el código, y esto parece hacerlo. También genera los simulacros que deberían ahorrarme toneladas de tiempo.
- 1. ¿Generación automática de pruebas unitarias para Java?
- 2. Pruebas unitarias Código C++ utilizando Java
- 3. Generación automática de pruebas de unidades .NET
- 4. Pruebas unitarias Código AS3 para Flash
- 5. Pruebas unitarias para impresión en Java Swing
- 6. Pruebas unitarias para acceder al código ActiveDirectory
- 7. Pruebas unitarias en el entorno Java EE
- 8. Generación automática de casos de prueba unitarios para .NET y Java
- 9. Generación automática de código para Strings.xml de Eclipse
- 10. Reescribir el código heredado
- 11. Generación automática de clases simuladas para gmock
- 12. Pruebas unitarias para malloc()
- 13. Generación de código Java
- 14. Pruebas unitarias Java, diseño de directorio
- 15. Pruebas unitarias Código ASP.NET detrás de
- 16. Ejecución automática de pruebas unitarias en la compilación
- 17. Refactorización práctica usando pruebas unitarias
- 18. marco de pruebas unitarias para C
- 19. ¿Realiza pruebas unitarias para código de no producción?
- 20. ¿Pruebas unitarias en el código de versión de producción?
- 21. pruebas unitarias para raspar pantallas?
- 22. SpecFlow/BDD para pruebas unitarias?
- 23. Deshabilitar generadores de pruebas unitarias en Rails
- 24. Pruebas unitarias para scripts de shell
- 25. generación de código Java JPA
- 26. Consejos para trabajar con el código heredado
- 27. ¿Las pruebas unitarias deben escribirse antes de escribir el código?
- 28. Ignorar la cobertura del código para pruebas unitarias en EclEmma
- 29. ¿Pruebas unitarias para procesos estocásticos?
- 30. ¿Es malo agregar código solo para pruebas unitarias?
Me encantaría ver una implementación de código abierto de algo así como Agitar: es el tipo de cosas para las que el código abierto debería ser realmente bueno. – Vihung