проблема компиляции тестового класса junit с помощью ant - PullRequest
3 голосов
/ 16 июля 2009

У меня проблемы с интеграцией junit с рабочим файлом ant build.xml. Мой тестовый класс находится в том же каталоге, что и мои исходные классы. Поскольку я учусь использовать муравей, я просто хочу скомпилировать все исходные и тестовые классы.

Я использую eclipse, и тестовые классы junit работают нормально при выполнении через eclipse. Это означает, что classpath настроен правильно (по крайней мере, с точки зрения eclipse) с помощью junit.jar и ant-junit-1.7.0.jar, хотя я не уверен, является ли последний jar абсолютно необходимым.

Моя структура папок:

ЦСИ / код / ​​MyClass.java ЦСИ / код / ​​MyClassTest.java

и файл ant содержит только одну цель, просто для компиляции MyClass и MyClassTest, в данный момент я не включаю никакие задачи junit и не против иметь файлы сборки в одном каталоге:

<target name="compile" >
  <javac srcdir="src/" />
</target>

Ant работал нормально, пока я не добавил MyClassTest.java (Junit с аннотациями) в свою папку. Выход:

[javac] C:\....\src\MyClassTest.java:3: package org.junit does not exist
cannot find symbol

Я думаю, что каким-то образом Ant не может найти библиотеки junit. Поскольку я не указываю путь к классам, я предполагал, что Ant будет искать в том же месте, что и исходные файлы, чтобы найти то, что ему нужно ... Как я могу сказать Ant, что jar-файлы junit тут же?

Любые идеи, действительно ценятся. Привет

Ответы [ 4 ]

6 голосов
/ 16 июля 2009

Да, вам нужно указать CLASSPATH.

Прошло много времени с тех пор, как я последний раз использовал Eclipse, но я считаю, что вам нужно щелкнуть правой кнопкой мыши на корне проекта, выбрать «Свойства» и добавить JUnit JAR в CLASSPATH.

Муравей должен знать CLASSPATH, когда вы используете его для сборки. Посмотрите на их материал.

Вот как я это делаю:

    <path id="production.class.path">
        <pathelement location="${production.classes}"/>
        <pathelement location="${production.resources}"/>
        <fileset dir="${production.lib}">
            <include name="**/*.jar"/>
            <exclude name="**/junit*.jar"/>
            <exclude name="**/*test*.jar"/>
        </fileset>
    </path>

    <path id="test.class.path">
        <path refid="production.class.path"/>
        <pathelement location="${test.classes}"/>
        <pathelement location="${test.resources}"/>
        <fileset dir="${test.lib}">
            <include name="**/junit*.jar"/>
            <include name="**/*test*.jar"/>
        </fileset>
    </path>
5 голосов
/ 16 июля 2009

Банки должны быть указаны по имени, а не по каталогу. Использование:

<javac srcdir="src/" classpath="pathtojar/junit.jar"/>

Где "pathtojar" - это путь, содержащий банку джунита.

1 голос
/ 04 декабря 2011

На самом деле мне не повезло, пока я не использовал fetch.xml для каждого веб-сайта apache, чтобы вытащить JAR-зависимости. Тогда это работало нормально для меня. Вот что я сделал:

  1. В командной строке я пошел в домашний каталог ant.
  2. Я набрал «ant -f fetch.xml -Ddest = system» (сохраняет файлы jar в каталоге lib Ant)
  3. Он не запустился бы, потому что хотел, чтобы я поместил maven-artifact-ant-2.0.4-dep.jar в папку ant / lib.
  4. Я сделал поиск в Google по этому банку и нашел его на jarfinder.com.
  5. Я скачал его и поместил в папку Ant Lib, потому что там он искал этот файл. Затем он извлек все необходимые файлы, и я был настроен.
  6. Затем в командной строке я вернулся в папку рабочей области и сбросил ее до build.xml. ant -buildfile build.xml
  7. Затем я выполнил ant clean, ant compile (сборка прошла успешно) и ant run, и все заработало - Build Successful.

JUnit встроен в Eclipse, но с ANT я попробовал несколько решений из документации apache и ant, но это то, что мне помогло. (Я на Windows 7) -Erik

0 голосов
/ 16 июля 2009

Вам нужно определить путь к классу и использовать его с задачей javac.

См. http://ant.apache.org/manual/using.html для некоторых основ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...