#java #maven #intellij-idea
#java #maven #intellij-idea
Вопрос:
Я довольно новичок в TestNG, Maven и IntelliJ. Я создал новый проект maven и определил класс ‘runtest’ в src / main / java. Я могу запускать тестовые наборы через testng.xml если я укажу тестовые классы в src /main / java.
Тем не менее, я хочу указать свои тестовые классы внутри src / test / java. Если я укажу какой-либо тестовый класс ‘test1.java ‘ в разделе src/test/ java и run он выдает ошибку: Ошибка: не удается найти класс в classpath: java/test1
Обходные пути, которые я уже пробовал:
- В testng.xml файл, содержащий полный путь к тестовому варианту — начиная с /Users/ (Примечание: я использую MAC)
- В testng.xml файл, содержащий полный путь к тестовому варианту — начиная с src/
- Указан дополнительный путь к классу в pom.xml в разделе maven-surefire-plugin (здесь также я указал полный путь, путь из базового каталога проекта и т.д.)
- Я попытался очистить кеш, однако никакой разницы
Другие наблюдения:
Intellij показывает мне ошибку, когда я указываю путь в testng.xml досье. Это дает мне возможность создать класс XXXX. Когда я нажимаю на создать класс — это дает мне 2 местоположения (src / main / java amp; src / test / java). У меня уже есть соответствующий тестовый класс в src / test / java. Почему он не принимает?
Я пытался проверить свой путь к классу на Mac, но у меня не было особого успеха.
Любая помощь будет оценена.
Спасибо
На основе комментариев, редактируя мои вопросы. Указываю детали моего кода.
Я хочу вызвать testng.xml файл из класса TestNG. Вот мой класс TestNG: runtests.java в src / main / java
публичный статический тестовый тестовый;
public static void main(String[] args) {
try {
testng = new TestNG();
testng.setPreserveOrder(true);
testng.setVerbose(0);
testng.setTestSuites(Arrays.asList("config/testng.xml"));
testng.run();
}
catch (Exception e) {
//Catch exception if any
System.err.println("Error: " e.getMessage());
}
}
Причина, по которой я хочу сделать это так, я хочу создать сборку maven и хочу указать testng.xml доступно для редактирования пользователем. Итак, если кто-то хочет запустить только 1 тестовый пример, он может редактировать testng.xml и запустите только 1 тестовый пример.
Вот мой testng.xml в config/testng.xml
имя набора = «Тестирование» подробное описание = «0»
имя теста = «Test1»
классы имя класса = «java / test1»
классы
тест
здесь, в имени класса, я не могу добавлять классы из другого местоположения. Я могу указать только классы, упомянутые в src / main / java. Я хочу указать классы, упомянутые в src / test / java.
Еще одна вещь, которую я хочу сделать: я хочу создать один конфигурационный файл, который будет поставляться со сборкой и будет доступен для редактирования. Итак, если пользователь хочет отредактировать конфигурацию (т. Е. Изменить имя сервера и т. Д.), Пользователь может редактировать файл конфигурации и запускать тестовые примеры.
Комментарии:
1. Пожалуйста, покажите ваш полный pom-файл?
Ответ №1:
Сначала вы должны найти свои модульные тесты, которые должны быть названы как *Test.java
, Test*.java
или TestCase*.java
в соответствующую папку, которая находится в Maven src/test/java
. Кроме того, вы никогда не должны определять полный путь в проекте Maven, не имеет значения, используете ли вы Mac / Linux / Windows Box или что-то еще.
Итак, в качестве примера макет папки выглядит следующим образом:
.
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── soebes
│ └── training
│ └── maven
│ └── simple
│ └── BitMask.java
└── test
├── java
│ └── com
│ └── soebes
│ └── training
│ └── maven
│ └── simple
│ └── BitMaskTest.java
└── resources
└── log4j.properties
Кроме того, вам не нужно определять дополнительный путь к классу в конфигурации maven-surefire-plugin, потому что, если вы разместите модульные тесты, как в приведенном выше примере, в правильном месте, он будет работать без какой-либо дополнительной конфигурации.
Если вы хотите использовать TestNG, вы можете просто поместить зависимость в свой pom-файл с помощью scope test следующим образом:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>
Кроме того, вам не нужен какой-либо testng.xml
файл или какой-либо другой файл конфигурации для запуска модульных тестов ни с помощью Maven, ни с помощью IntelliJ, ни с помощью Eclipse. Вы просто запускаете тесты, используя следующую командную строку (которую я рекомендую сначала протестировать, прежде чем переходить в вашу IDE):
mvn clean package
Вам также не нужно настраивать maven-surefire-plugin, это будет работать из коробки.
Комментарии:
1. Спасибо. еще немного информации: