Ant + Junit问题

时间:2012-01-22 19:01:45

标签: java ant junit

我想让Junit与Ant合作。我遇到过关于这个主题的问题。我想某处有一些小错误,但我无法弄清楚。这是我的构建文件:

        <?xml version="1.0" encoding="UTF-8"?>
    <project name="IvleFileSync" default="dist" basedir=".">
    <description>
        simple example build file
    </description>
      <!-- set global properties for this build -->
      <property name="src" location="src"/>
      <property name="build" location="build"/>
      <property name="dist"  location="dist"/>
        <!-- Variables used for JUnit testing -->
        <property name="test.dir" location="test" />
        <property name="test.report.dir" location="test-reports" />
     <path id="junit-classpath">
    <fileset dir="${test.dir}">
        <include name = "*" />
    </fileset>
     </path>

    <path id="files-classpath">
    <fileset dir="/usr/lib" >
        <include name="*.jar"/>
    </fileset>
    </path> 

      <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->
    <mkdir dir="${build}"/>
    <mkdir dir="${test.report.dir}" />
      </target>

      <target name="compile" depends="init" description="compile the source " >
    <!-- Compile the java code from ${src} into ${build} -->
     <javac srcdir="${src}" destdir="${build}"> 
           <classpath>
        <path refid="files-classpath" />
    </classpath> 
    </javac>

       </target>

      <target name="dist" depends="compile"
        description="generate the distribution" >
    <!-- Create the distribution directory -->
    <mkdir dir="${dist}/lib"/>

    <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
    <jar jarfile="${dist}/lib/IvleFileSync-${DSTAMP}.jar" basedir="${build}"/>
      </target>

    <target name="compile-test" depends="compile" description="compile the tests " >
       <!-- Compile the java code from ${src} into ${build} -->
       <javac srcdir="${test.dir}" destdir="${build}"> 
         <classpath>
          <path refid="files-classpath" />
       </classpath> 
       </javac>

    </target>

    <target name="test" depends="compile-test" description="Execute Unit Tests" >
      <junit printsummary="yes" fork="yes" haltonfailure="yes" showoutput="false">
       <classpath >
    <path refid="files-classpath" />
    <path refid= "junit-classpath" />
       </classpath>
    <batchtest fork="yes" todir="${test.report.dir}/"> 
            <formatter type="xml"/> 
            <fileset dir="${test.dir}"> 
                <include name="*Test*.java"/> 
            </fileset> 
    </batchtest> 
      </junit>
    </target>

      <target name="clean"
        description="clean up" >
    <!-- Delete the ${build} and ${dist} directory trees -->
    <delete dir="${build}"/>
    <delete dir="${test.report.dir}" />
    <delete dir="${dist}"/>
      </target>
    </project>

我在/ test目录中有测试文件以及我把jar放在ANT_HOME / lib中

这不起作用,当我挖掘test-results / .... xml

时,我得到了这个错误
<error message="NewEmptyJUnitTest"     type="java.lang.ClassNotFoundException">java.lang.ClassNotFoundException: NewEmptyJUnitTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)

感谢您帮助我...

2 个答案:

答案 0 :(得分:2)

junit任务的类路径不包括编译测试目标的输出。对JUnit类路径使用类似以下的内容:

<classpath>
  <pathelement path="${build}"/>
  <path refid="files-classpath" />
  <path refid="junit-classpath" />
</classpath>

答案 1 :(得分:1)

您忘记将自己的类(“构建”)添加到“测试”目标。