2013-03-14 5 views
0

У меня есть два идентичных файлов сборки, которые выглядят как этотеще один Ant/JUnit ClassNotFoundException

build.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project name="Tryout" default="test1" basedir="."> 
    <property name="src" location="src"/> 
    <property name="build" location="bin"/> 
    <property name="junit" location="junit-4.10.jar"/> 
    <target name="compile" description="compile the source" > 
     <javac srcdir="${src}" destdir="${build}" debug="on"> 
      <classpath location="junit-4.10.jar"/> 
      <classpath location="${build}"/> 
     </javac> 
    </target> 
    <target name="test1" depends="compile"> 
     <junit printsummary="yes" fork="no" haltonfailure="no"> 
      <classpath location="${build}"/> 
      <classpath location="junit-4.10.jar"/> 
      <formatter type="plain"/> 
      <test name="TestOne"/> 
      <test name="TestTwo"/> 
     </junit> 
    </target> 
</project> 

Единственное отличие заключается в Trial1 классы находятся в bin, в то время как в Trial2 классов находятся в bin/one/two/three, и все классы находятся в пакете one.two.three. Trial1 отлично работает, тесты junit запускаются и распечатывают результаты в txt-файле. Trial2 может скомпилировать исходный код в соответствующую папку, но затем сбой при выполнении junit. Здесь ошибка:

Testsuite: TestOne 
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 

    Caused an ERROR 
TestOne 
java.lang.ClassNotFoundException: TestOne 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 

Вот часть отладки, что я считаю уместным

Class java.util.ArrayList loaded from parent loader (parentFirst) 
Finding class org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner$3 
Loaded from /usr/share/ant/lib/ant-junit.jar org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner$3.class 
Finding class TestOne 
Class java.lang.System loaded from parent loader (parentFirst) 
Class java.lang.StringBuffer loaded from parent loader (parentFirst) 
    [junit] Running TestOne 
Class org.apache.tools.ant.util.StringUtils loaded from parent loader (parentFirst) 
Class org.apache.tools.ant.util.FileUtils loaded from parent loader (parentFirst) 
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 
    [junit] Test TestOne FAILED 

Любая помощь мне точку в правильном направлении было бы весьма признателен !! Спасибо за ваше время.

ответ

1

Должно быть <test name="one.two.three.TestOne"/> так называемое название вашего тестового класса: one.two.three.TestOne.

Если вы хотите Ant, чтобы найти, где тесты расположены, использовать что-то вроде этого:

<batchtest> 
    <fileset dir="${src}"> 
    <include name="**/Test*.java"/> 
    </fileset> 
</batchtest> 
+0

вау спасибо очень хороший сэр – Steve

Смежные вопросы