2012-05-18 21 views
5

he estado rascando la cabeza sobre esto durante un tiempo (buscado en Google un montón, mirado a través de otros relacionados SO mensajes sin éxito). Tengo un programa Java compuesto por dos archivos, Logic y Tests. Tests contiene un centenar de pruebas JUnit, y yo he conseguido tasa de éxito del 100% con dichas pruebas llamando javac *.java seguido por java org.junit.runner.JUnitCore Tests. Sin embargo cuando corro mi build.xml con un simple ant -verbose test (con el fin de seguir a la salida ya que soy nuevo en todo esto), me sale el siguiente resultado:Nueva a Ant, JUnit ClassNotFoundException con

[junit] Testsuite: Tests 
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 
[junit] 
[junit] Null Test: Caused an ERROR 
[junit] Tests 
[junit] java.lang.ClassNotFoundException: Tests 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
[junit]  at java.lang.Class.forName0(Native Method) 
[junit]  at java.lang.Class.forName(Class.java:247) 
[junit] 
[junit] 
[junit] Test Tests FAILED 

BUILD SUCCESSFUL 

Mi build.xml es el siguiente:

<project name="ETL_Automation" default="test" basedir="."> 

<path id="classpath.base"> 
</path> 

<path id="classpath.test"> 
    <pathelement location="${basedir}/mysql-connector-java-5.1.18-bin.jar" /> 
    <pathelement location="${basedir}/junit-4.10.jar"/> 
    <path refid="classpath.base" /> 
</path> 

<target name="compile"> 
    <javac srcdir="${basedir}"> 
    <classpath refid="classpath.test"/> 
    </javac> 
</target> 

<target name="test" depends="compile"> 
    <junit fork="no"> 
    <classpath refid="classpath.test" /> 
    <formatter type="brief" usefile="false" /> 
    <batchtest> 
     <fileset dir="${basedir}/" includes="Tests.class" /> 
    </batchtest> 
    </junit> 
</target> 

<target name="clean" depends="test"> 
    <delete> 
    <fileset dir="${basedir}" includes="*.class"/> 
    </delete> 
</target> 

La estructura del directorio es bastante sencilla. Tests.java, Logic.java, junit-4.10.jar, mysql-connector-java-5.1.18-bin.jar, build.xml, y un archivo referenciado .properties están todos en la misma carpeta. El código de Java hace referencia a archivos externos, pero estos no están relacionados con este problema en particular. No sé si el classpath podría ser la causa de este problema (ya que estoy bastante convencido de que lo que tengo actualmente no funciona).

Gracias!

Respuesta

3

Usted tendrá que añadir el directorio con el Tests.class a la classpath.tests ruta de clase (que es ${basedir} en su configuración)

Probar:

<path id="classpath.test"> 
    <pathelement location="${basedir}/mysql-connector-java-5.1.18-bin.jar" /> 
    <pathelement location="${basedir}/junit-4.10.jar"/> 
    <pathelement location="${basedir}" /> 
    <path refid="classpath.base" /> 
</path> 
Cuestiones relacionadas