Вот цель, которую я использую для выполнения своих тестов:
<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, они используются только из них.