2012-05-18 5 views
5

나는 잠시 동안 내 머리를 긁적 봤다. (무리를 챙겨서 다른 유용한 SO 게시물을 보았다.) Java 프로그램은 LogicTests의 두 파일로 구성되어 있습니다. Tests에는 약 100 회의 JUnit 테스트가 포함되어 있으며이 테스트에서는 javac *.java을 호출하고이어서 java org.junit.runner.JUnitCore Tests을 호출하여 100 % 성공률을 얻었습니다. 그러나 나는 실행할 때 내와 build.xml 간단한 ant -verbose test, 나는 다음과 같은 출력을 얻을 (위해 나는 모든이에 새로 온 이후 출력을 따르지에서) :JUnit의 새로운 기능, ClassNotFoundException

[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 

build.xml은 다음과 같다을 :

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

디렉토리 구조는 매우 간단합니다. Tests.java, Logic.java, junit-4.10.jar, mysql-connector-java-5.1.18-bin.jar, build.xml 및 인용 된 .properties 파일은 모두 동일한 폴더에 있습니다. Java 코드는 외부 파일을 참조하지만이 특정 문제와 관련이 없습니다. 나는 classpath가이 이슈의 원인이 될 수 있는지 알지 못한다. (나는 현재 내가 가지고있는 것이 작동하지 않는다고 확신한다.)

감사합니다.

답변

3

당신이 (당신의 설정에서 ${basedir}이다)에 classpath.tests 클래스 경로에 Tests.class에 디렉토리를 추가해야합니다

시도 :

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