首页 文章

用Ant开始的JUnit-Test给出了一个“ClassNotFoundException”

提问于
浏览
1

这个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)中的PropertiesHelperTest,位于java.net.URLClassLoader.findClass(URLClassLoader.java)的java.security.AccessController.doPrivileged(Native Method) 205)at java.lang.ClassLoader.loadClass(ClassLoader.java:321)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:294)at java.lang.ClassLoader.loadClass(ClassLoader.java:266)at at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:186)

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

2 回答

  • 0

    您需要使用 **/*Test.java 以递归方式包含文件 .

    请参阅filesetdirectory-based tasks文档 .

  • 0

    我编辑了我的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,现在它可以工作了!

相关问题