2013-09-24 2 views
0

У меня есть проект Java, в котором есть каталог «src» для кода, непосредственно связанного с моим проектом, и каталог «test», который Тесты JUnit, которые работают с кодом в каталоге src. Структуры справочника таковы:Исходные и тестовые каталоги «источника» - как я могу запускать тесты из теста с источником

ROOT/src/com/mycompany/decoders/qDecoder/..... 

ROOT/test/com/mycompany/decoders/qDecoder/..... 

Оба каталога имеют ту же самую структуру упаковки.

Следующая является объектом и связанной с JUnit информация:

<property name="src_classes_dir" value="./bin"/> 
<property name="test_classes_dir" value="./binTest"/> 

<path id="junit.classpath"> 
    <pathelement location="${src_classes_dir}"/> 
    <pathelement location="${test_classes_dir}"/> 
    <pathelement location="${CommonJarPath}/JUnit/junit.jar"/> 
    <pathelement location="${CommonJarPath}/JavaMail/mailapi.jar"/> 
    <pathelement location="${CommonJarPath}/JavaMail/smtp.jar"/> 
    <pathelement location="${CommonJarPath}/CommonsLang3/commons-lang3.jar"/> 
    <pathelement location="${CommonJarPath}/JDBC/inetsoftware/merlia/8.0.2/Merlia.jar"/> 
    <pathelement location="${CommonJarPath}/JodaTime/joda-time.jar"/> 
</path> 

<property name="test_dir" value="./test"/> 

<target name="junit" description="Run JUnit tests" depends="compile_source, compile_test">   
    <junit fork="yes" haltonfailure="yes" haltonerror="yes" showoutput="yes"> 
    <formatter type="plain" usefile="no"/> 
    <classpath refid="junit.classpath"/>     
    <batchtest>   
     <fileset dir="${test_dir}" /> 
    </batchtest>  
    </junit> 
</target> 

Итак, мои тестовые файлы (*.java) в ${test_dir}. Тестовые классы находятся в ${test_classes_dir}, а тестируемые классы находятся в ${src_classes_dir}. Оба они перечислены в справочнике junit.classpath.

Все цели будут завершены, «чистый», «приготовительные», «src_compile» и «test_compile» вплоть до «JUnit» цели, то я получаю ClassNotFoundException на первом же тесте AMCiBitsTest. Так что он знает о тесте, но по какой-то причине не может найти свой класс.

Вот след исключение:

junit: 
    [junit] Testsuite: com.amci.util.AMCiBitsTest 
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 
    [junit] 
    [junit]  Caused an ERROR 
    [junit] com.amci.util.AMCiBitsTest 
    [junit] java.lang.ClassNotFoundException: com.amci.util.AMCiBitsTest 
    [junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    [junit]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    [junit]  at java.security.AccessController.doPrivileged(Native Method) 
    [junit]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    [junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    [junit]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    [junit]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    [junit]  at java.lang.Class.forName0(Native Method) 
    [junit]  at java.lang.Class.forName(Class.java:190) 
    [junit] 

Я в тупик. Что я делаю не так? Почему это не может пройти тест AMCiBitsTest и все остальные тесты?

+0

Не могли бы вы предоставить stacktrace класса ClassNotFoundException. –

+0

попробуйте установить '' to '', очевидно, есть ваши скомпилированные тестовые классы. не уверен, что он решает проблему. – Claudiu

+0

Вы компилировали свой код _test_? Вы должны скомпилировать '* .java'' '.class' в своем тестовом источнике, прежде чем вы сможете запустить JUnit на них. –

ответ

0

Я исправил его. Достаточно сказать, что я сделал синтаксическую ошибку в моем файле сборки, и то, что опубликовано выше, действительно работает. Приносим извинения и благодарю за ваши вопросы и ваше время.

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