Ant - Junit - eclipse - build.xml - java.lang.ClassNotFoundException错误

时间:2013-10-16 01:33:00

标签: ant

我是Ant新手并获得java.lang.ClassNotFoundException。从eclipse / Ant build.xml运行我的Junit时,然而,当我自己从eclipse运行我的单元测试时,我的测试没有问题。我的类路径应该有问题,我无法弄明白。

我的主人是:

Java_home:C:/ Program Files / Java / jdk1.7.0_25 Ant_home:C:/Users/Armen/javaFolder/apache-ant-1.9.2/bin JUnit_home:C:/Users/Armen/javaFolder/apache-ant-1.9.2/bin/junit-4.10.jar

我的Build.xml

<property name="junitLocation">C:/Users/Armen/javaFolder/apache-ant-1.9.2/bin/junit-4.10.jar</property>
<property name="antLocation2">C:/Users/Armen/JavaFolder/apache-ant-1.9.2.jar</property>
<property name="testCode">C:/Users/Armen/workspace/MockingObjects/test/demo</property>
<property name="srcCode">C:/Users/Armen/workspace/MockingObjects/src/demo</property>

<target name="compile" depends="clean">
        <javac includeantruntime="false" srcdir="./src" destdir="./staging" ></javac>
</target>

<target name="run" depends="compile, unitTest">
    <java classname="demo.AccountService"><classpath path="./staging"></classpath></java>
</target>

<target name="unitTest" depends="compile">
    <junit printsummary="true" showoutput="true" haltonfailure="false" fork="yes">

        <formatter type="plain" usefile="true"/>
        <test name="demo.TestAccountService" outfile="./result" ></test>

        <classpath> 
            <pathelement location="${junitLocation}"/>
            <pathelement location="${antLocation}"/>
            <pathelement location="${testCode}" />
            <pathelement location="${srcCode}"/>
        </classpath>

    </junit>
</target>

<target name="clean">
    <delete dir="staging"></delete>
    <mkdir dir="./staging"/>
</target>

在此输入图片说明

1 个答案:

答案 0 :(得分:0)

您的构建脚本中没有任何步骤来编译单元测试,当您告诉JUnit运行时,您也不会在类路径中包含已编译的类 - 只包含源文件。

因此,您需要做两件事:

  1. 添加类似于以下内容的其他构建步骤

    <target name="test-compile" depends="compile">
        <javac includeantruntime="false" srcdir="./test" destdir="./test-classes" />
    </target>
    
  2. 然后将当前的unitTest目标更改为依赖test-compile而不是compile

    1. 告诉JUnit你的课在哪里,而不是你的源代码。将您的testCodesrcCode属性更改为

      <property name="testCode">C:/Users/Armen/workspace/MockingObjects/test-classes</property>
      <property name="srcCode">C:/Users/Armen/workspace/MockingObjects/staging</property>
      
    2. 注意从编译和运行步骤开始,不清楚您的代码是否在Java包中正确构建,或者如果它在包中,您了解它们是如何工作的。我已假设您的代码位于demo的包中,因此从已编译的类位置中删除了该部分路径。