2010-01-25 35 views
37

Cualquier herramienta para generar automáticamente pruebas unitarias para Código Java?¿Generación automática de pruebas unitarias para Java?

ACTUALIZACIÓN: El uso principal previsto es generar rápidamente pruebas unitarias para el código heredado que se va a refactorizar. No es necesario mantener automáticamente las pruebas sincronizadas con el código después de la generación automática. Se preguntó


Casi misma pregunta aquí, pero la respuesta fue para .NET en lugar de Java (Pex fue la respuesta aceptada):

Automatic generation of Unit test cases for .NET and Java

+0

¿Podría aclararnos y explicar por qué desea generarlos? ¿Pretendes que sea un one-shot, y los mantendrás sincronizados más tarde? – KLE

+0

KLE, acaba de actualizar la pregunta para responder a su pregunta. –

+0

Además, consulte https://stackoverflow.com/a/37552432/1874627 – saurabheights

Respuesta

15

Los tres productos tienen una opción de probar antes de comprar, por lo que podría usarlos para comparar el código generado con un pequeño subconjunto de su aplicación.

3

creo Agitar tenía una herramienta como esta llamada AgitarOne. Creo que todavía puede obtenerlo, pero asegúrese de que la compañía aún esté allí.

4

NetBeans lo hace automáticamente desde los archivos fuente de Java (supongo que los otros IDEs también).

Tal vez usted podría echar un vistazo en el plugin JUnit (el enlace está actualmente abajo :-()

+0

hey, ¿por qué los votos hacia abajo? la respuesta aceptada es incluso similar y no de código abierto ... – Karussell

+11

Los votos bajos se deben probablemente a los comprobantes de prueba de la unidad generadora de NetBeans, no a las pruebas unitarias enteras como las herramientas a las que se hace referencia en la respuesta aceptada. – Todd

+1

Netbeans 8 en realidad genera la prueba de unidad completa. –

38

herramientas comerciales:?

  • AgitarOne parece ser el mayor jugador en el campo Existe. también 30-day trial y la interfaz web gratuito llamado JUnit Factory. Hay una revisión independiente del uso de la herramienta en here, por ejemplo. Prueba de generación de AgitarOne en gran medida se centra en las pruebas de regresión.
  • Jtest es una otro gran jugador, que ha existido desde 1998. Existe una prueba gratuita. Tanto AgitarOne como Jtest han sido awardedmultiple times, y ambos son IDE: s basados ​​en Eclipse.
  • SilverMark Test Mentor, Java Edition es un producto comercial que aparentemente también puede crear pruebas basadas en el código de Java. Este producto no tengo experiencia.

Herramientas gratuitas:

  • CodePlex AnalytiX solía ser una herramienta comercial (fue el primer plugin comercial para Eclipse en 2001), pero desde que Google compró la compañía desarrollarla, el producto ha sido puesto en libertad como libre. Es un IDE completo basado en Eclipse y un finalista de Jolt Award en la generación de pruebas en 2007. Las características son agradables, pero la herramienta no se ha actualizado en mucho tiempo, por lo que desafortunadamente no funciona con las versiones actuales de eclipse, y parece tener problemas con el código que requiere java> = 1.5.
  • EvoSuite es un a winner of SBST (Search-Based Software Testing) '13 unit test generation competition, así como SBST '17 unit test generation competition. Existe un plugin de Eclipse, una interfaz web y una versión de línea de comando de la herramienta. Hay un criterio de regresión documentado, pero aparentemente aún no funciona: las pruebas generaron el objetivo para cobertura de sucursales, cobertura de mutación débil o cobertura de mutación fuerte.
  • Randoop utiliza un enfoque de generación de pruebas aleatorias orientadas a la retroalimentación. La herramienta ha estado presente desde 2007 y ha estado en continuo desarrollo. Randoop puede producir tanto pruebas de regresión como pruebas de búsqueda de errores. Es una herramienta de línea de comandos robusta y confiable, y también existe el complemento Eclipse.
  • Palus afirma que utiliza el análisis dinámico y estático, y se está construyendo encima de Randoop. Sus autores afirman que se ha utilizado internamente en Google. Mi experiencia con este software es que al menos la versión actual (0.2) parece tener algunos problemas internos y no parece ampliarse bien.
  • Daikon, Eclat, Javalanche, Java PathFinder, JCrasher, jWalk, Korat, RecGen y ReCrash son herramientas libres que están disponibles también.

Tenga en cuenta que las pruebas generadas por Jtest y AgitarOne dependen de corredores con licencia y no se pueden ejecutar si no tiene sus complementos integrados. Este no es el caso de las herramientas gratuitas que he probado, que generan pruebas independientes.

Descargo de responsabilidad: No estoy afiliado a ninguna de estas herramientas, pero he realizado investigaciones académicas sobre el tema.

+1

CodePlex ya no es accesible. Palus, Eclat, JCrasher y Korat dependen de las bibliotecas que ya no están disponibles. Tal vez [testrecorder] (http://testrecorder.amygdalum.net/) es una buena compleción para su lista. – CoronA

3

Netbeans 8 tiene una capacidad incorporada para construir pruebas unitarias que son más que stubs. Para usar esta función:

  1. Abra la clase que desea probar.
  2. Seleccione Create/Update Tests en el menú Tools.
  3. Seleccione las funciones que desee.
  4. Abra la prueba de unidad creada y termine las partes restantes de la prueba.