Как установить TestNG в NetBeans? - PullRequest
0 голосов
/ 11 октября 2018

Сначала я добавил зависимость и репозиторий в файл maven pom.xml моего проекта:

<repositories>
    <repository>
        <id>jcenter</id>
        <name>bintray</name>
        <url>http://jcenter.bintray.com</url>
    </repository>
</repositories>

 <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.10</version>
    <scope>test</scope>
</dependency>

и выполнил NetBeans «Очистка и сборка».Он загрузил материал TestNG, но код проекта все еще показал, что он не может найти нужные ему классы.Я вижу, что C: \ Users \ Greg.m2 \ repository \ org \ testng \ testng \ 6.10 \ testng-6.10.jar существует.Если я открою этот jar-файл, то увижу, что org \ testng \ Assert.class существует.Почему NetBeans не может его найти?

Поскольку это не удалось, я следовал инструкциям по настройке среды TestNG здесь: https://www.tutorialspoint.com/testng/testng_environment.htm

My TESTING_HOME Переменная среды установлена ​​на

C:\Users\Greg\Projects\TestNG

Моя CLASSPATH установлена ​​в

%CLASSPATH%;%TESTING_HOME%\testng-6.10.jar

Да, этот файл JAR существует там.

Я открываю новую командную оболочку и перехожу на

C:\Users\Greg\Projects\Enventive\en360\src

там, где существует testng.xml

Затем я выдаю следующую команду в соответствии с doc

*1029*
java org.testng.TestNG testng.xml
1031 * автора TestNG, но получаю

Ошибка: не удалось найти или загрузить основной класс org.testng.TestNG

В NetBeans 8.2 я могу создать класс TestNG с помощью

File>New File...>Unit Tests>TestNG Test Case

Производит тесткод, но все аннотации содержат ошибки из-за ошибки в строке импорта

import static org.testng.Assert.*;

, в которой говорится, что

пакета org.testng не существует

Если я пытаюсь установить плагин TestNG в NetBeans, скачав поддержку Maven TestNG, а затем пытаюсь установить его с помощью

Tools>Plugins>Downloaded>[navigate to downloaded org-netbeans-modules-testng-maven.nbm]>Install

Не удается установить с этой ошибкой:

Некоторые плагины требуют установки плагина Maven Embedder.Плагин Maven Embedder запрашивается в версии> = 2.54, но был найден только 2.52.1.Затрагивается следующий плагин: Поддержка Maven TestNG

Поиск "Maven Embedder" на вкладке "Доступные плагины" или в Интернете ничего не находит.

1 Ответ

0 голосов
/ 12 октября 2018

Проблема заключалась в том, что тег 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

И это сработало!

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