2016-09-13 5 views
2

Привет я совсем новичок в использовании муравей, мой инструктор хотел, чтобы использовать его, чтобы сделать некоторые задачи, такие как построить класс, запустите tests..etcJunit тест терпит неудачу, но построить успешно (Ant)

и я я действительно запутался, так как я не могу сделать работу юнита. Я прочитал несколько других сообщений и источников, но это еще больше смущает меня.

ошибка я получаю:

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

Caused an ERROR 
SolutionTest 
java.lang.ClassNotFoundException: SolutionTest 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:340) 

это мой файл сборки:

<project name="Solution" basedir="." default="main"> 
    <property name="src.dir"  value="src"/> 
    <property name="build.dir" value="build"/> 

    <property name="classes.dir" value="${build.dir}/classes"/> 
    <property name="jar.dir" value="${build.dir}/jar"/> 
    <property name="doc.dir" value="${build.dir}/documentation" /> 
    <property name="test.dir" value="${build.dir}/test" />  

    <target name="compile"> 
     <mkdir dir="${classes.dir}"/> 
      <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false"> 
     </javac> 
    </target> 

    <target name="jar" depends="compile"> 
     <mkdir dir="${jar.dir}"/> 
      <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> 
     </jar> 
    </target> 

    <target name="clean" depends="jar"> 
     <delete dir="${classes.dir}"/> 
    </target> 

    <target name="doc" depends="clean"> 
     <mkdir dir="${doc.dir}" /> 
     <javadoc destdir="${build.dir}/documentation" sourcefiles="${src.dir}/*.java" /> 
    </target> 

    <target name="junit" depends="doc"> 
     <mkdir dir="${test.dir}" /> 
     <junit printsummary="yes" haltonfailure="no"> 
      <classpath location="." /> 

      <test name="SolutionTest" haltonfailure="no" todir="${test.dir}" outfile="result"> 
       <formatter type="plain" /> 
       <formatter type="xml" /> 
      </test> 
     </junit> 
    </target> 

    <target name="main" depends="clean, junit"/> 
</project> 
+0

JUnit не могут найти тесты. Измените ' ', чтобы указать, где вы действительно размещаете скомпилированные файлы .class. Однако я не вижу, где вы собираете свои тесты. Вам может понадобиться цель, подобная цели компиляции, только с тегами test.dir или такими, а не с src.dir. – Robert

+0

Похоже, что цель вашего юнита не зависит от какой-либо цели компиляции. Это зависит от 'doc', который зависит от' clean', но там нет компиляционного шага. Вам может потребоваться скомпилировать ваши классы и проверить зависимости на 'test.dir', а затем указать ваш элемент' classpath' в этот каталог вместо '.' – jrahhali

+0

Чтобы JUnit завершил сбой при сборке, когда тесты терпят неудачу (или их не удается найти) измените «haltonfailure» на «yes» в цели junit. – Robert

ответ

1

Вы должны использовать <junit haltOnFailure="yes" haltOnError="yes" ...>, если вы хотите построить на провал.

В качестве альтернативы вы можете использовать failureProperty и errorProperty

<junit failureProperty="test.failure" haltonfailure="test.error"> 
    <!-- your code here --> 
</junit> 

И проверить, если эти свойства было установлено

<target name="main" depends="clean, junit, verifyNoError, verifyNoFailure"/> 

<target name="verifyNoError" if="test.error"> 
    <fail message="JUnit test or tests errors."/> 
</target> 

<target name="verifyNoFailure" if="test.failure"> 
    <echo message="I'm here. Now what?"/> 
    <fail message="JUnit test or tests failed."/> 
</target> 
Смежные вопросы