Ответ 1
В моем случае (с использованием Mint, на основе Debian)
sudo apt-get install ant-optional
- единственное, что сработало.
У меня есть целевой тест с именем, и я хочу сделать некоторые тесты.
Я помещаю здесь важные части в build.xml. Он включает в себя:
<property name='lib.dir' value='lib' />
<path id='classpath'>
<fileset dir="${lib.dir}" includes="**/*.jar" />
</path>
И я положил junit.jar и ant -junit.jar (это обязательный?) в каталоге lib.
Однако, если я запустил
ant test
.
Ошибка вывода:
test:
BUILD FAILED
/home/xiaohan/EclipseWorkSpace/AntTest/build.xml:82: Problem: failed to create task or type junit
Cause: the class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask was not found.
This looks like one of Ant optional components.
Action: Check that the appropriate optional JAR exists in
-/usr/share/ant/lib
-/home/xiaohan/.ant/lib
-a directory added on the command line with the -lib argument
Do not panic, this is a common problem.
The commonest cause is a missing JAR.
This is not a bug; it is a configuration problem
Кроме того, если я помещаю два файла jar в /usr/share/ant/lib с помощью набора $ANT_HOME, он все равно не работает.
Действительно спасибо за любые подсказки
В моем случае (с использованием Mint, на основе Debian)
sudo apt-get install ant-optional
- единственное, что сработало.
Проблема была решена на системах на основе RHEL после установки ant -junit:
$ sudo yum install ant-junit
<property name='lib.dir' value='lib' />
<path id='classpath'>
<fileset dir="${lib.dir}" includes="**/*.jar" />
</path>
это не имеет ничего общего с Ant classpath. Это свойства, которые вы можете использовать в своих задачах. Вы должны поместить банки в предлагаемые директории или добавить аргумент командной строки.
Попробуйте запустить его следующим образом:
ant -lib /path/to/the/ant-junit.jar test
Я видел это сообщение, потому что я пропустил включение ant -junit.jar из моего пути класса IDE, например. в Eclipse > Щелкните правой кнопкой мыши по вашему проекту > Запустить как > Запустить конфигурации.. > Путь к классам (вкладка) > Убедитесь, что существует ant -junit.jar.
Когда вы запускаете задачи JUnit, вы должны убедиться, что оба ваших classpath
, которые были использованы для ваших сборников, и путь к junit-банкам добавлены в ваш путь к классам.
Я предпочитаю помещать junit jars внутри моего проекта, поэтому другим не нужно устанавливать их на своих машинах, чтобы моя сборка работала. Я бы установил их в ${basedir}/antlib/junit
Я использую ${basedir}/antlib
для хранения всех различных флагов, связанных с конструкцией Ant, таких как банки Ant -Contrib, JaCoCo, Findbugs и т.д. Так как это внутри моего проекта, проверка всегда будет включать эти банки и сборка будет работать для всех:
<classpath id="junit.path">
<fileset dir="${basedir}/antlib/junit"/>
</classpath>
Это создаст путь, содержащий ваши JUnit-банки. Теперь, чтобы скомпилировать тесты junit:
<javac dest="${target.dir}/test-classes"
src=${src.test.java}">
<classpath refid="javac.classpath"/> <!-- Your main build classpath -->
<classpath refid="junit.path"/> <!-- Your JUnit classpath -->
<classpath path="${main.destdir}"/> <!-- These the classes you've built-->
Обратите внимание, что размещение банок JUnit в $ANT_HOME/lib
main не работает, потому что это зависит от того, установлен ли <javac>
includeAntRuntime
или нет. Всегда рекомендуется не устанавливать этот набор, чтобы сделать вашу сборку более независимой от платформы.
Также не забудьте включить junit.path
в свою задачу <junit>
.