test instalar framework for descarga java performance ant junit

java - instalar - Las pruebas de Ant Junit se están ejecutando mucho más lentamente a través de la hormiga que a través de IDE, ¿qué mirar?



junit netbeans instalar (7)

Estoy ejecutando mis pruebas junit vía ant y están funcionando sustancialmente más lento que a través del IDE. Mi llamada es:

<junit fork="yes" forkmode="once" printsummary="off"> <classpath refid="test.classpath"/> <formatter type="brief" usefile="false"/> <batchtest todir="${test.results.dir}/xml"> <formatter type="xml"/> <fileset dir="src" includes="**/*Test.java" /> </batchtest> </junit>

La misma prueba que se ejecuta casi instantáneamente en mi IDE (0.067s) toma 4.632s cuando se ejecuta a través de Ant. En el pasado, he podido acelerar los problemas de prueba utilizando el parámetro junit fork, pero esto no parece ser de ayuda en este caso. ¿Qué propiedades o parámetros puedo ver para acelerar estas pruebas?

Más información:

Estoy usando el tiempo informado del IDE frente al tiempo que sale la tarea junit. Esta no es la suma del tiempo total informado al final de la ejecución de la hormiga.

Entonces, extrañamente, este problema se resolvió solo. ¿Qué pudo haber causado este problema? El sistema se ejecuta en un disco local, por lo que ese no es el problema.


Aquí hay una suposición ciega: intente aumentar el tamaño máximo de <jvmarg> dinámico disponible para la máquina virtual bifurcada utilizando una etiqueta <jvmarg> anidada para establecer la opción -Xmx .


Difícil de decir con esa información. Lo primero que haría sería examinar los resultados de la prueba y determinar si todas las pruebas individuales se ejecutan uniformemente más despacio o si se puede reducir a un cierto subconjunto de casos de prueba.

(Lo cero que haré es asegurarme de que mi tarea ant está utilizando la misma JVM que Eclipse y que las dependencias classpath y los JAR importados son realmente y verdaderamente idénticos)


Intente configurar fork, forkmode y threads con estos valores:

<junit fork="yes" forkmode="perTest" printsummary="off" threads="4"> <classpath refid="test.classpath"/> <formatter type="brief" usefile="false"/> <batchtest todir="${test.results.dir}/xml"> <formatter type="xml"/> <fileset dir="src" includes="**/*Test.java" /> </batchtest> </junit>

También vea https://ant.apache.org/manual/Tasks/junit.html


Para el registro, encontré mi problema. Hemos estado utilizando un ofuscador de código para este proyecto, y la parte de cifrado de cadena de ese ofuscador se estableció en "máximo". Esto desaceleró cualquier operación donde las cadenas estuvieran presentes.

Bajar el cifrado de la cadena a un modo más rápido solucionó el problema.


Para mí, agregar forkmode="once" para el elemento <junit> y agregar usefile="false" para el elemento <formatter> hace que las pruebas se ejecuten mucho más rápido. También elimine los formateadores que no necesita.


Supongo que es porque su antscript está produciendo resultados en archivos XML, mientras que el IDE los conserva en la memoria. Lleva más tiempo escribir un archivo que no escribir un archivo.

todir="${test.results.dir}/xml"

Esa es la parte de la llamada <batchtest> que le dice que pegue los resultados en ese directorio. Parece que al dejarlo solo le dice que pegue los resultados en el "directorio actual", sea lo que sea. A primera vista, no vi nada para apagarlo por completo.


Tal vez lo esté viendo porque Eclipse hace compilación incremental y Ant no lo hace. ¿Puedes confirmar que este tiempo se desperdicia solo en el objetivo de la prueba?