2016-04-11 2 views
1

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

Error: Could not find or load main class Homewok2Test.class 

Вот мой build.xml:

<project name="othello" basedir="."> 
    <target name="compile"> 
     <javac srcdir="src" destdir="build"> 
     <classpath> 
      <pathelement path="lib/junit-4.12.jar"/> 
      <pathelement path="lib/hamcrest-core-1.3.jar"/> 
     </classpath> 
     </javac> 
     <jar jarfile="dest-client/othello-client.jar" basedir="build"> 
     <manifest> 
      <attribute name="Main-Class" value="Homewok2Test.class" /> 
     </manifest> 
     </jar> 
    </target> 
    <target name="run"> 
     <java jar="dest-client/othello-client.jar" fork="true"/> 
    </target> 
</project> 
+0

Действительно ли это называется «Homewok»? И вам действительно нужно использовать суффикс «.class»? –

+0

Файл с тестовым классом называется Homework2Test, если я не использую суффикс, я получаю ту же ошибку – Olaf458

+0

Так что, возможно, обращение к классу «Home ** wok ** 2Test» не будет работать тогда. –

ответ

1

Изменить это ...

<attribute name="Main-Class" value="Homewok2Test.class" /> 

К ...

<attribute name="Main-Class" value="Homework2Test" /> 

NB ваше значение выше, имеет опечатка, которая могла бы быть еще один вопрос для вас: Homewok.

И убедитесь, что ваш класс Homework2Test имеет основной метод что-то вроде этого ...

public static void main(String[] args) { 
    org.junit.runner.JUnitCore runner = new org.junit.runner.JUnitCore(); 
    org.junit.runner.Result result = runner.run(Homework2Test.class); 
} 

Значение полный путь пакета к классу, а не путь физического файла класса. Затем, когда вы запускаете банку, она автоматически подбирает атрибут Main-Class и запускает этот класс соответственно.

Если вы используете тесты JUnit из вашего класса Homework2Test, все должно быть хорошо, но если вы этого не сделаете, вы можете запустить JUnit из Ant.

Что-то вроде этого ...

<target name="unit-test-1" > 
    <junit printsummary="yes" haltonfailure="yes"> 
    <classpath> 
     <pathelement location="${project.class.path}"/> 
     <pathelement location="${build.tests}"/> 
     <pathelement path="${java.class.path}"/> 
    </classpath> 
    <test name="com.jenkov.test.MyUnitTest" 
      haltonfailure="no" outfile="result"> 
     <formatter type="plain"/> 
     <formatter type="xml"/> 
    </test> 
    </junit> 
</target> 

Взятые из this tutorial

Или this tutorial также могут быть использованы.

+0

Я получаю ту же ошибку. Я не уверен, правильно ли я использую junit, потому что для запуска нужен какой-то основной класс, но в моем тесте нет основного класса только «public class Homework2Test» – Olaf458

+0

. Мое предположение заключается в том, что вы используете тестовые классы JUnit из этого главный класс Homework2Test? Если нет, тогда вам нужно будет указать запуск JUnit из файла Ant build.xml. См. [ЭТО] (https://ant.apache.org/manual/Tasks/junit.html) для получения информации о том, как это сделать. – ManoDestra

+0

Я не уверен, что я должен набрать «$ {project.class.path}» и «$ {java.class.path}» – Olaf458

0

Поэтому я добавил

<target name="run"> 
      <junit printsummary="yes" haltonfailure="yes"> 
       <classpath> 
        <pathelement path="lib/junit-4.12.jar"/> 
        <pathelement path="lib/hamcrest-core-1.3.jar"/> 
        <pathelement path="dest-client/othello-client.jar"/> 
        <pathelement location="lib/junit-4.12.jar"/> 
        <pathelement location="lib/hamcrest-core-1.3.jar"/> 
        <pathelement location="dest-client/othello-client.jar"/> 
       </classpath> 
       <test name="Homework2Test" haltonfailure="yes" outfile="result"> 
        <formatter type="plain"/> 
        <formatter type="xml"/> 
       </test> 
      </junit> 
<target/> 

Следующая проблема была правописание, в моей первой сборке у меня есть Homewok2Test, что неправильно. Правильный класс был Homework2Test

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