繁体   English   中英

蚂蚁junit目标失败,因为ClassNotFoundException?

[英]Ant junit target failing because ClassNotFoundException?

我想用ant运行JUnit测试。 目前,我的build.xml中包含以下内容:

...
<property name="src.main.dir" location="src" />
<property name="src.test.dir" location="test" />
<property name="lib.dir" location="lib" />
<property name="build.dir" location="build" />
<property name="reports.dir" location="reports" />
<property name="reports.tests.dir" location="${reports.dir}/tests" />
<property name="jar.dir" location="${build.dir}/jar" />
<property name="classes.dir" location="${build.dir}/classes" />
<property name="classes.main.dir" location="${classes.dir}/main" />
<property name="classes.test.dir" location="${classes.dir}/test" />

<target name="main" depends="test">
    <echo message="targets completed" />
</target>

<target name="test" depends="compile" >
    <junit printsummary="yes" haltonfailure="yes">
        <classpath>
            <path>
                <fileset dir="${lib.dir}">
                    <include name="hamcrest-core-1.3.jar" />
                    <include name="junit-4.12.jar" />
                </fileset>
            </path>
        </classpath>

        <formatter type="plain"/>

        <batchtest fork="yes" todir="${reports.tests.dir}">
            <fileset dir="${src.test.dir}">
                <include name="**/*Test.java" />
            </fileset>
        </batchtest>
    </junit>
</target>
...

如果我运行ant, ClassNotFoundException收到ClassNotFoundException异常:

Testsuite: com.aaa.viewlog.dataobjects.ComparablePairTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec

    Caused an ERROR
com.aaa.viewlog.dataobjects.ComparablePairTest
java.lang.ClassNotFoundException: com.aaa.viewlog.dataobjects.ComparablePairTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:260)

你能告诉我为什么我会例外吗,我该如何解决?

我的项目结构: 在此处输入图片说明

发现了错误。 我忘了添加这些:

<pathelement path="${classes.test.dir}"/>
<pathelement path="${classes.main.dir}"/>

以“测试”目标。 现在,“测试”目标看起来像这样:

        <formatter type="plain"/>

        <batchtest fork="yes" todir="${reports.tests.dir}">
            <fileset dir="${src.test.dir}">
                <include name="**/*Test.java" />
            </fileset>
        </batchtest>
    </junit>
</target>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM