2012-05-18 43 views
5

我一直在摸索我的头一阵子(谷歌搜索一堆,看通过其他相关的SO帖子无济于事)。我有一个由两个文件组成的Java程序,LogicTestsTests包含约一百个JUnit测试,并且通过调用javac *.javajava org.junit.runner.JUnitCore Tests,我已经获得了100%的成功率。然而,当我运行build.xml用一个简单的ant -verbose test(为了跟随输出,因为我是新来的这一切),我得到下面的输出:对Ant来说是新手,使用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代码引用外部文件,但这些与这个特定问题无关。我不知道类路径是否会成为这个问题的原因(因为我相信我目前有什么不工作)。

谢谢!

回答

3

您将需要与Tests.class添加目录到类路径classpath.tests(这是${basedir}在你的设置)

尝试:

<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> 
相关问题