JUnit-Test, запущенный с Ant, выдает «ClassNotFoundException» - PullRequest
1 голос
/ 26 февраля 2011

Этот муравей-мишень работает:

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

поэтому "dist / FBChatSoft.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: PropertiesHelperTest на java.net.URLClassLoader $ 1.run (URLClassLoader.java:217) at java.security.AccessController.doPrivileged (собственный метод) на java.net.URLClassLoader.findClass (URLClassLoader.java:205) в java.lang.ClassLoader.loadClass (ClassLoader.java:321) at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:294) в java.lang.ClassLoader.loadClass (ClassLoader.java:266) в java.lang.Class.forName0 (собственный метод) at java.lang.Class.forName (Class.java:186)

Весь код можно найти по адресу: https://bitbucket.org/michaelkohler/fbchatsoft/src

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

Я отредактировал свой 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 и теперь он работает!

0 голосов
/ 26 февраля 2011

Вам нужно использовать **/*Test.java для рекурсивного включения файлов.

См. набор файлов и задач на основе каталогов документация.

...