我是新来的Apache ant。现在,我正在尝试为两个项目运行一只蚂蚁。让我们看下面...。

我有一个名为“乘法”的项目。在该项目中,我编写了一个名为“ Multiply”的Java类和一个名为“ multiply”的函数,该函数将两个输入整数相乘并返回结果。

然后,我创建了另一个名为“ Multiply-Test”的项目。在构建路径配置中,我将“ Multiply”项目添加到其中进行测试。然后,我编写一个名为“ MultiplyTest”的Test类和一个测试用例,以测试Multiply Project的Multiply类的乘法函数的返回值。

然后,我为“ Multiply-Test”项目编写了一个蚂蚁脚本(build.xml)文件。我的xml文件是...




<!-- Sets variables which can later be used. -->
<property name="src.dir" location="src" />
<property name="build.dir" location="bin" />
<property name="test.report.dir" location="test-result" />

<!-- Define the classpath which includes the junit.jar and the classes after compiling-->
<path id="junit.class.path">
    <pathelement location="lib/junit.jar" />
    <pathelement location="${build.dir}" />
</path>

<!-- Deletes the existing build, docs and dist directory-->
<target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${test.report.dir}" />
</target>

<!-- Creates the  build, docs and dist directory-->
<target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${test.report.dir}" />
</target>

<!-- Compiles the java code (including the usage of library for JUnit -->
<target name="compile" depends="clean, makedir">
    <javac srcdir="${src.dir}/com/dat/multiply" destdir="${build.dir}">
        <classpath refid="junit.class.path" />
    </javac>
</target>

<!-- Run the JUnit Tests -->
<target name="junit" depends="compile">
    <junit printsummary="on" fork="true" haltonfailure="yes">
        <classpath refid="junit.class.path" />
        <formatter type="xml" />
        <batchtest todir="${test.report.dir}">
            <fileset dir="${src.dir}">
                <include name="**/*Test.java" />
            </fileset>
        </batchtest>
    </junit>
</target>

<target name="main" depends="compile, junit">
    <description>Main target</description>
</target>




然后,我运行ant脚本。我在控制台中发现以下错误...。

 Buildfile: C:\Eclipse Kepler\workspace\Multiply-Test\build.xml
 clean:
    [delete] Deleting directory C:\Eclipse Kepler\workspace\Multiply-Test\bin
    [delete] Deleting directory C:\Eclipse Kepler\workspace\Multiply-Test\test-tesult
 makedir:
    [mkdir] Created dir: C:\Eclipse Kepler\workspace\Multiply-Test\bin
    [mkdir] Created dir: C:\Eclipse Kepler\workspace\Multiply-Test\test-result
 compile:
    [javac] C:\Eclipse Kepler\workspace\Multiply-Test\build.xml:29:
    warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
junit:
    [junit] Running com.dat.test.MultiplyTest
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec

    BUILD FAILED
    C:\Eclipse Kepler\workspace\Multiply-Test\build.xml:36: Test com.dat.test.MultiplyTest failed

    Total time: 1 second


并发现以下junit输出错误……

   java.lang.ClassNotFoundException: com.dat.test.MultiplyTest
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)


但是我用另一种方式进行测试。然后,我清理并构建两个项目。然后通过右键单击class-> Run As来运行“ MultiplyTest”类。 -> JUnit测试。哦,真的是工作。我希望Junit的结果是正确的。

现在,我不知道如何通过蚂蚁脚本测试类的工作。我需要解决,但我不知道。
有人帮我。谢谢..!

最佳答案

这看起来不正确:

<javac srcdir="${src.dir}/com/dat/multiply" destdir="${build.dir}">
    <classpath refid="junit.class.path" />
</javac>


srcdir<javac>不应包含/com/dat/multiply部分。 <javac> documentation解释:


请勿在srcdir属性中包含部分包结构


相反,它应该是:

<javac srcdir="${src.dir}" destdir="${build.dir}">
    <classpath refid="junit.class.path" />
</javac>

10-06 14:11