2012-05-18 18 views
5

Şimdi bir süredir başımı kaşıdıyorum (Bir grupta gezdim, diğer ilgili SO gönderilerini boşuna baktım). İki dosyadan oluşan bir Java programım var, Logic ve Tests. Tests, yaklaşık yüz JUnit testi içerir ve javac *.java'u ve ardından java org.junit.runner.JUnitCore Tests'u arayarak söz konusu testlerle% 100 başarı oranını yakaladım. Ancak çalıştırdığınızda benim ile build.xml basit ant -verbose test, aşağıdaki çıktıyı almak (sırayla bütün bu yeniyim beri çıkışını takip etmek cinsinden):Yeni, Ant ile ClassNotFoundException JUnit ile

[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 

Benim build.xml aşağıdaki gibidir:

<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> 

Dizin yapısı oldukça basittir. Tests.java, Logic.java, junit-4.10.jar, mysql-connector-java-5.1.18-bin.jar, build.xml ve başvurulan bir .properties dosyasının tümü aynı klasörde bulunur. Java kodu harici dosyalara başvurur, ancak bu özel konuyla ilgisi yoktur. Sınıf yolunun bu sorunun sebebi olup olmadığını bilmiyorum (şu anda sahip olmadığım şeylere oldukça ikna oldum).

Teşekkürler!

cevap

3

Sen (Kurulumunuzda ${basedir} olan) classpath.tests sınıf için Tests.class dizini eklemeniz gerekecektir

Dene:

<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> 
İlgili konular