Ответ 1
Если вы используете ant, JCommander должен быть внутри testng.jar, поэтому я думаю, что ваш файл testng.jar может быть поврежден.
Я использую 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, и все кажется прекрасным, у кого есть идеи по этому поводу?
Если вы используете ant, JCommander должен быть внутри testng.jar, поэтому я думаю, что ваш файл testng.jar может быть поврежден.
Если вы используете Maven, попробуйте добавить это в свой pom.xml
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.30</version>
</dependency>
jcommander.jar(например, jcommander-1.29.jar) должен присутствовать в каталоге набора файлов, который указан в файле build.xml
Вы можете скачать его из: http://mvnrepository.com/artifact/com.beust/jcommander/1.27
ИЛИ
JCommander должен находиться внутри testng.jar во время использования ant. Ваш файл testng.jar может быть поврежден, поэтому, пожалуйста, замените старый testng.jar на новый.
Может быть testng.jar не находится в пути к классам.
У меня была такая же проблема с проектом, отличным от Maven. Я получил тестовую банку от Maven Central, но не содержал все зависимости TestNG. Загрузка контейнера непосредственно с сайта TestNG решила проблему, так как она содержит зависимости.
Я должен был больше обратить внимание на указания на странице загрузки TestNG...
Последняя версия TestNG может быть загружена из Maven Central или здесь для пользователей ant.
Мой ant начинает работать, когда я загрузил jcommandar jar из Maven и добавил его в файл jar
Но эта проблема Начинается с версии testng 6.8.5
Проблема заключается в том, что некоторые версии контейнера testNG не содержат jar-кода jcommander внутри них. В результате вам нужно отдельно добавить путь к JQuery jarander.
Добавление jcommander jar в ваш путь к классу при запуске будет исправлять проблему, надеюсь,