【问题标题】:JUnit-Test started with Ant gives a "ClassNotFoundException"以 Ant 开始的 JUnit-Test 给出“ClassNotFoundException”
【发布时间】:2011-07-04 20:07:22
【问题描述】:

这个 Ant-Target 有效:

<target name="run">
    <java jar="dist/FBChatSoft.jar" fork="true"/>
</target>

所以“dist/FBChatSoft.jar”是 jar 的正确路径。

但是下面的目标不起作用。 *Test.java 的路径也是正确的。,

<target name="junit" depends="jar">
    <mkdir dir="junitreport"/>
    <junit printsummary="yes">
        <classpath>
            <path location="dist/FBChatSoft.jar"/>
        </classpath>

        <formatter type="xml"/>

        <batchtest fork="yes" todir="junitreport">
            <fileset dir="src/fbchatsoft/client/" includes="*Test.java"/>
        </batchtest>
    </junit>
</target>

<target name="junitreport">
    <junitreport todir="junitreport">
        <fileset dir="junitreport" includes="TEST-*.xml"/>
        <report todir="junitreport"/>
    </junitreport>
</target>

在 JUnitReport 中我可以阅读:

PropertiesHelperTest

java.lang.ClassNotFoundException: 属性助手测试 在 java.net.URLClassLoader$1.run(URLClassLoader.java:217) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:266) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(Class.java:186)

您可以在以下位置找到完整代码:https://bitbucket.org/michaelkohler/fbchatsoft/src

【问题讨论】:

    标签: java ant junit4 classnotfoundexception


    【解决方案1】:

    您需要使用**/*Test.java 才能递归地包含文件。

    请参阅 filesetdirectory-based tasks 文档。

    【讨论】:

    • 现在是以下内容:&lt;batchtest fork="yes" todir="junitreport"&gt; &lt;fileset dir="src/fbchatsoft/client/" includes="**/*Test.java"/&gt; &lt;/batchtest&gt; 但我仍然收到此错误。
    【解决方案2】:

    我编辑了我的 build.xml,现在它看起来像这样:

        <?xml version="1.0" encoding="UTF-8"?>
    <project name="FBChatSoft" default="default" basedir=".">
        <description>Builds, tests, and runs the project FBChatSoft.</description>
    
        <import file="nbproject/build-impl.xml"/>
    
        <import file="nbproject/profiler-build-impl.xml"/>
    
        <target name="clean">
            <delete dir="dist"/>
        </target>
    
        <target name="compile">
            <mkdir dir="build/classes"/>
            <javac srcdir="src" destdir="build/classes"/>
        </target>
    
        <target name="jar">
            <mkdir dir="dist"/>
            <jar destfile="dist/FBChatSoft.jar" basedir="build/classes">
                <manifest>
                    <attribute name="Main-Class" value="fbchatsoft.client.FBChatSoft"/>
            <attribute name="Class-Path" value="lib/smack.jar lib/junit-4.5.jar"/>
                </manifest>
            </jar>
        </target>
    
        <target name="run">
            <java jar="dist/FBChatSoft.jar" fork="true"/>
        </target>
    
        <target name="junit" depends="jar">
            <mkdir dir="junitreport"/>
            <junit printsummary="yes">
                <classpath>
                    <pathelement location="build/classes/"/>
                </classpath>
    
                <formatter type="xml"/>
    
                <batchtest todir="junitreport">
                    <fileset dir="src/" includes="**/*Test.java"/>
                </batchtest>
            </junit>
        </target>
    
        <target name="junitreport">
            <junitreport todir="junitreport">
                <fileset dir="junitreport" includes="TEST-*.xml"/>
                <report todir="junitreport"/>
            </junitreport>
        </target>
    </project>
    

    然后我将最新的 junit 包添加到 /usr/share/ant/lib,现在它可以工作了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多