Проблема заключалась в том, что тег scope должен быть «compile», а не «test».Автор документа специально говорит, чтобы использовать «тест».Я потратил целый день, чтобы найти решение здесь: - (
Ошибка компиляции Maven [пакет org.testng.annotations не существует]
Пока это исправлено для NetBeans, это не для командной строки. Мне удалось запустить его, указав фактический файл JAR в параметре -cp (classpath), например:
java -cp C:\Users\Greg\Projects\MyCompany\MyProject\src;c:\users\Greg\Projects\TestNG\testng-6.10.jar org.testng.TestNG testng.xml
, где первый путь является расположениеtestng.xml и второй путь к файлу jar. Еще раз, документ автора ошибочен в том, что он показывает только путь к папке, содержащей testng.xml.
Хотя это действительно находит оба TestNGclass и testng.xml, возникает исключение:
Исключение в потоке "main" java.lang.NoClassDefFoundError: com / beust / jcommander / ParameterException
Это кажетсястранно, потому что мой testng.xml не содержит никаких параметров. (Может, так и должно быть?). В любом случае, глядя в файл jar, действительно, есть com / beust, но нет папки jcommander.
Я скачал latest testng-6.14.3.jar, в котором также нет com / beust / jcommander.
Вот мой testng.xml.Кто-нибудь может увидеть проблему?
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="E360 Test Site" verbose="10">
<test name="Test Analysis Results" preserve-order="true">
<classes>
<class name="test.java.core.EnProjectIT">
<methods>
<include name="testCreateTables" />
</methods>
</class>
</classes>
</test>
</suite>
Чтобы преодолеть эту проблему, я добавил следующую зависимость в свой файл pom.xml:
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.48</version>
</dependency>
Затем добавил его в путь к классам в командной строкекак это: java -cp C:\Users\Greg\Projects\Enventive\en360\src;c:\users\Greg\Projects\TestNG\testng-6.14.3.jar;c:\users\Greg\Projects\TestNG\jcommander-1.72.jar org.testng.TestNG testng.xml
Теперь я получаю следующую ошибку:
Не удается найти класс в classpath: test.java.core.EnProjectIT
Хорошо, мне нужно добавить местоположение скомпилированного класса, а не местоположение кода Java в classpath.Теперь это выглядит так:
java -cp C:\Users\Greg\Projects\MyCompany\MyProject\src;C:\Users\Greg\Projects\MyCompany\MyProject\target\classes;c:\users\Greg\Projects\TestNG\testng-6.14.3.jar;c:\users\Greg\Projects\TestNG\jcommander-1.72.jar org.testng.TestNG testng.xml
Новая ошибка:
Невозможно создать экземпляр класса test.java.core.EnProjectIT Причина: java.lang.NoClassDefFoundError: org / kohsuke / args4j / CmdLineException
Кажется, я просто пинаю банку в будущем.Может быть, мне нужно поместить весь репозиторий .m2 в classpath?
Хорошо, я нашел умный способ исправить все эти проблемы с зависимостями.Так как NetBeans смог построить проект нормально, у него должен быть способ собрать все файлы jar в его путь к классам.Конечно же, я нашел все из них в одном месте: C: \ Users \ Greg \ Projects \ MyCompany \ MyProject \ target \ ProductSnapshot \ WEB-INF \ lib *
Я добавил это в -cp, который теперьвыглядит так:
java -cp C:\Users\Greg\Projects\MyCompany\MyProject\src;C:\Users\Greg\Projects\MyCompany\MyProject\target\classes;C:\Users\Greg\Projects\MyCompany\MyProject\target\ProductSnapshot\WEB-INF\lib\* org.testng.TestNG testng.xml
Ну, я думаю, что я сейчас очень близок.Следующая ошибка говорит, что не может найти файл проекта.Похоже, мне нужно запустить программу из другого каталога.
java.io.FileNotFoundException: C: \ Users \ Greg \ Projects \ MyCompany \ MyProject \ src \ WEB-INF \ EnDatabaseTest.свойства (система не может найти указанный путь)
Он добавляет WEB-INF \ EnDatabaseTest.properties в каталог запуска, поэтому я создам каталог запуска C: \ Users \ Greg \ Projects \ MyCompany \MyProduct \ WebContent
Я поместил testng.xml в этот каталог, переместился в этот каталог и выполнил следующее:
java -cp C:\Users\Greg\Projects\MyCompany\MyProject\WebContent;C:\Users\Greg\Projects\MyCompany\MyProject\target\classes;C:\Users\Greg\Projects\MyCompany\MyProject\target\En360-1.0.0\WEB-INF\lib\* org.testng.TestNG testng.xml
И это сработало!