Проблема запуска JUnit от Ant - PullRequest
       4

Проблема запуска JUnit от Ant

1 голос
/ 13 января 2010

Вот цель, которую я использую для выполнения своих тестов:

<target name="run-tests" description="run the tests" depends="compilation">
        <junit>
            <sysproperty key="tests.basedir" value="${SPECIAL_PATH}/unit_tests"/>
            <classpath>
                <pathelement location="${COMPILED_CLASSES}"/>
                <pathelement location="${basedir}/junit-4.8.1.jar"/>
            </classpath>
            <batchtest>
                <fileset dir="${COMPILED_CLASSES}/unit_tests/">
                    <include name="**/Test*.class"/>
                    <exclude name="**/*$*"/>
                </fileset>
            </batchtest>
        </junit>
    </target>

Тем не менее, каждый раз, когда я пытаюсь запустить эту цель, все мои тесты терпят неудачу с чем-то вроде:

[junit] java.lang.ClassNotFoundException: testpackage.TestMyClass
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
[junit]     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
[junit]     at java.lang.Class.forName0(Native Method)
[junit]     at java.lang.Class.forName(Class.java:247)

Свойство SPECIAL_PATH указывает на исходный код классов. Свойство COMPILED_CLASSES указывает на место, куда были помещены файлы .class. И мне нужно свойство tests.basedir, потому что я использую его из своих модульных тестов.

Что я делаю не так?

РЕДАКТИРОВАТЬ: Я также подумал, что я должен объяснить исключение $. Я исключаю анонимные классы, потому что они не представляют TestCases, они используются только из них.

Ответы [ 3 ]

3 голосов
/ 13 января 2010

Вы говорите Junit выполнить каждый тестовый класс в ${COMPILED_CLASSES}/unit_tests/, но вы помещаете просто ${COMPILED_CLASSES} в путь к классам.Возможно, вам нужно изменить запись пути к классу на

<pathelement location="${COMPILED_CLASSES}/unit_tests/"/>
1 голос
/ 26 января 2010

Поскольку ваш класпат имеет

${COMPILED_CLASSES}

и ваши тестовые классы находятся в

${COMPILED_CLASSES}/unit_tests

, они должны быть в пакете

unit_tests.<whatever the classpath is>

, традиционно этопочему люди собирают обычные источники для target / классов и тестируют источники для target / test-classes

0 голосов
/ 26 января 2010

Возможно, вам понадобится скомпилировать UnitTests. Не могли бы вы опубликовать, где вы используете задачу Javac?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...