2012-05-18 3 views
5

Я немного почесываю голову над этим некоторое время (Googled a bunch, просмотрел другие связанные сообщения SO, безрезультатно). У меня есть программа Java, состоящая из двух файлов: Logic и Tests. Tests содержит около сотни тестов JUnit, и я получил 100% -ный шанс успеха с указанными тестами, позвонив по телефону javac *.java, а затем java org.junit.runner.JUnitCore Tests. Однако, когда я бегу мой build.xml с простым ant -verbose test (для того, чтобы следовать вывод, так как я новичок на все это), я получаю следующий результат:Новое в Ant, ClassNotFoundException с JUnit

[junit] Testsuite: Tests 
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 
[junit] 
[junit] Null Test: Caused an ERROR 
[junit] Tests 
[junit] java.lang.ClassNotFoundException: Tests 
[junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
[junit]  at java.lang.Class.forName0(Native Method) 
[junit]  at java.lang.Class.forName(Class.java:247) 
[junit] 
[junit] 
[junit] Test Tests FAILED 

BUILD SUCCESSFUL 

Мой build.xml выглядит следующим образом:

<project name="ETL_Automation" default="test" basedir="."> 

<path id="classpath.base"> 
</path> 

<path id="classpath.test"> 
    <pathelement location="${basedir}/mysql-connector-java-5.1.18-bin.jar" /> 
    <pathelement location="${basedir}/junit-4.10.jar"/> 
    <path refid="classpath.base" /> 
</path> 

<target name="compile"> 
    <javac srcdir="${basedir}"> 
    <classpath refid="classpath.test"/> 
    </javac> 
</target> 

<target name="test" depends="compile"> 
    <junit fork="no"> 
    <classpath refid="classpath.test" /> 
    <formatter type="brief" usefile="false" /> 
    <batchtest> 
     <fileset dir="${basedir}/" includes="Tests.class" /> 
    </batchtest> 
    </junit> 
</target> 

<target name="clean" depends="test"> 
    <delete> 
    <fileset dir="${basedir}" includes="*.class"/> 
    </delete> 
</target> 

Структура каталогов довольно проста. Tests.java, Logic.java, junit-4.10.jar, mysql-connector-java-5.1.18-bin.jar, build.xml и файл с данными ссылки .properties находятся в одной папке. Код Java ссылается на внешние файлы, но они не связаны с этой конкретной проблемой. Я не знаю, может ли быть причиной этой проблемы (так как я уверен, что у меня в настоящее время нет работы).

Спасибо!

ответ

3

Вам нужно будет добавить каталог с Tests.class к classpath.tests (классам, который ${basedir} в настройках)

Try:

<path id="classpath.test"> 
    <pathelement location="${basedir}/mysql-connector-java-5.1.18-bin.jar" /> 
    <pathelement location="${basedir}/junit-4.10.jar"/> 
    <pathelement location="${basedir}" /> 
    <path refid="classpath.base" /> 
</path> 
Смежные вопросы