Неожиданно не удается запустить тесты TestNG из ant ([testng] Причина: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException) - PullRequest
11 голосов
/ 18 августа 2011

Я использую ant и TestNG 6.1.1, и мои тесты вчера работали очень хорошо. Сегодня, когда я пытаюсь запустить тесты, я получаю NoClassDefFoundError с участием com / beust / jcommander / ParamException. Вот вывод:

[copy] Copying 1 file to /Users/djohnson/src/webapp/components/build/tmp
[testng] Exception in thread "main" java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException
[testng] Caused by: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException
[testng]    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[testng]    at java.security.AccessController.doPrivileged(Native Method)
[testng]    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[testng]    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[testng]    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[testng]    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[testng] The tests failed.

Вот XML-файл, который я использую:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Single Method Suite">
  <test name="Single Method Test">
    <classes>
      <class name="DhcpTest">
        <methods>
          <exclude name=".*" />
          <include name="setGetEnabledTest" />
        </methods>
      </class>
    </classes>
  </test>
</suite>

Я также указал полный путь для класса без удачи. Я проверил classpath и все вроде нормально, у кого-нибудь есть идеи по этому поводу?

Ответы [ 7 ]

8 голосов
/ 18 августа 2011

Если вы используете ant, JCommander должен находиться внутри testng.jar, поэтому я думаю, что ваш файл testng.jar может быть поврежден.

4 голосов
/ 20 ноября 2012

Если вы используете Maven, попробуйте добавить это в ваш pom.xml

<dependency>
  <groupId>com.beust</groupId>
  <artifactId>jcommander</artifactId>
  <version>1.30</version>
</dependency>
3 голосов
/ 25 февраля 2014

jcommander.jar (например, jcommander-1.29.jar) должен присутствовать в каталоге набора файлов, который указан в build.xml

Вы можете скачать его с: http://mvnrepository.com/artifact/com.beust/jcommander/1.27

ИЛИ,

JCommander должен находиться внутри testng.jar во время использования муравья.Возможно, ваш файл testng.jar поврежден, поэтому замените старый файл testng.jar новым.

0 голосов
/ 05 июня 2015

Проблема здесь в том, что некоторые версии jar testNG не содержат внутри себя jar-код jcommander.В результате вы должны добавить classpath к банке Jcommander отдельно.

Добавление Jcommander jar к вашему classpath при запуске исправит проблему, надеюсь

0 голосов
/ 03 июня 2015

Мой муравей начинает работать, когда я скачал jcommandar jar с Репозиторий Maven и добавил его в мой файл jar

Но эта проблема Начало работы с версией testng 6.8.5

0 голосов
/ 18 ноября 2014

У меня была такая же проблема с не-Maven проектом. Я получил jar testng из Maven Central, но он не содержал всех зависимостей TestNG. Загрузка jar-файла непосредственно с сайта TestNG решила проблему, поскольку она содержит зависимости.

Я должен был уделить больше внимания указаниям на странице загрузки TestNG ...

Последняя версия TestNG может быть загружена с Maven Central или здесь для пользователей муравья .

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

Может быть testng.jar не в classpath.

...