2011-08-08 17 views
6

Tengo pruebas JUnit en mi proyecto que se ejecutan correctamente con Eclipse.Prueba de Junit integrada con Ant Falló con ClassNotFoundException

Entonces, ahora trato de integrar estas pruebas con una tarea ant. Para hacer que hago la siguiente secuencia de comandos de hormigas:

<path id="classpath-test"> 
    <pathelement path="." /> 
    <pathelement path="${classes.home}" /> 
    <fileset dir="${lib.home}" includes="*.jar" /> 
    <fileset dir="${libtest.home}" includes="*.jar" /> 
</path> 

    <target name="compile" ... > // compiles src code of the project 

<target name="compile-tests" depends="compile"> 
    <javac srcdir="${test.home}" 
      destdir="${testclasses.home}" 
      target="1.5" 
      source="1.5" 
      debug="true" 
     > 
     <classpath refid="classpath-test" /> 
    </javac> 

    <copy todir="${testclasses.home}"> 
     <fileset dir="${test.home}"> 
      <exclude name="**/*.java"/> 
     </fileset> 
    </copy> 
</target> 

<target name="unit-test" depends="compile-tests"> 
    <junit printsummary="false" fork="off" haltonfailure="true"> 
     <classpath refid="classpath-test" /> 

     <formatter type="brief" usefile="false" /> 

     <test name="com.test.MyTest" /> 

     <!--<batchtest todir="${reports.dir}" > 
      <fileset dir="${testclasses.home}" > 
       <exclude name="**/AllTests*"/> 
       <include name="**/*Test.class" /> 
      </fileset> 
     </batchtest>--> 
    </junit> 
</target> 

El directorio $ {} libtest.hom contiene junit-4.8.1.jar y hamcrest-core-1.1.jar.

Cuando inicio el siguiente comando: unidad de prueba de hormigas, la ejecución de la MyTest falla con el siguiente resultado:

unit-test: 
[junit] Testsuite: com.test.MyTest 
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 
[junit] 
[junit] Null Test: Caused an ERROR 
[junit] com.test.MyTest 
[junit] java.lang.ClassNotFoundException: com.test.MyTest 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
[junit]  at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316) 
[junit]  at java.lang.Class.forName0(Native Method) 
[junit]  at java.lang.Class.forName(Class.java:247) 
[junit] 
[junit] 

Es muy extraño porque es com.test.MyTest bien en la ruta de clase señaló para mi tarea junit in ant script Alguien tendría una idea para resolver este problema?

Gracias por su ayuda.

Sylvain.

Respuesta

3

El directorio ${testclasses.home} no está en ninguna parte en una ruta de clases para la tarea <junit>.

Creo que aquí es donde vive el archivo de clase com.test.MyTest.

Aquí se modifica meta-prueba de unidad:

<target name="unit-test" depends="compile-tests"> 
    <junit printsummary="false" fork="off" haltonfailure="true"> 
     <classpath> 
      <path refid="classpath-test"/> 
      <fileset dir="${testclasses.home}"/> 
     </classpath> 

     <formatter type="brief" usefile="false" /> 

     <test name="com.test.MyTest" /> 

     <!--<batchtest todir="${reports.dir}" > 
      <fileset dir="${testclasses.home}" > 
       <exclude name="**/AllTests*"/> 
       <include name="**/*Test.class" /> 
      </fileset> 
     </batchtest>--> 
    </junit> 
</target> 
+0

Gracias por su respuesta. Soluciona mi problema Me había olvidado de poner clases de prueba en el classpath de mi tarea conjunta. – sylsau

+0

Esta solución se ejecuta con otro error en mi caso: java.util.zip.ZipException; mira aquí: http://stackoverflow.com/questions/8655193/not-able-to-run-test-through-ant en la respuesta de Mayoares. El cambio de la etiqueta de arriba en me ayudó a corregir esta falla. – srnka

Cuestiones relacionadas