Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Maven + TestNG - тесты не запускаются с листенером ReportNG


(Lyubov Averina) #1

Добрый день!

Я пытаюсь подключить листенер ReportNG в проект на Maven.

Добавила в pom файл зависимости

>                   <dependency>
> 				<groupId>org.testng</groupId>
> 				<artifactId>testng</artifactId>
> 				<version>6.8</version>
> 			</dependency>			
> 			<dependency>
> 	            <groupId>com.google.inject</groupId>
> 	            <artifactId>guice</artifactId>
> 	            <version>3.0</version>
> 	        </dependency>
>    			<dependency>
> 	            <groupId>velocity</groupId>
> 	            <artifactId>velocity</artifactId>
> 	            <version>1.4</version>
> 	            <scope>test</scope>
> 	        </dependency>
> 			<dependency>
> 				<groupId>org.uncommons</groupId>
> 				<artifactId>reportng</artifactId>
> 				<version>1.1.2</version>
> 			        <exclusions>
> 			            <exclusion>
> 			                <groupId>org.testng</groupId>
> 			                <artifactId>testng</artifactId>
> 			            </exclusion>
> 			        </exclusions>
>    			</dependency>

Добавила листенер в файл конфигурации TestNG:

> <listeners>
> 	<listener class-name="org.uncommons.reportng.HTMLReporter" />
> </listeners> 

При запуске mvn test получаю exception до выполнения тестов:

 T E S T S
-------------------------------------------------------
Running TestSuite
org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null
java.lang.reflect.InvocationTargetException

Для сравнения:

Если запускать через сам TestNG, exception такой:

org.testng.TestNGException: 
Listener org.uncommons.reportng.HTMLReporter was not found in project's classpath
	at org.testng.TestNG.initializeConfiguration(TestNG.java:907)
	at org.testng.TestNG.run(TestNG.java:1031)
	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
	at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

Если добавить ReportNG, Guice и Velocity в build path (ровно те же версии что указаны в pom файле maven) - то все работает.

То есть видимо, при сборке через maven недовыкачиваются зависимости. Что я делаю не так?


(Sergey Korol) #2
  1. Для запуска тестов вам нужен maven-surefire-plugin.
  2. Пересмотрите версии ваших депенденси: reportng / velocity уже давно имеют более новые билды.
  3. Уберите всякие скоуп и экcлужены из депенденси. Не все то, что пишут в древних гайдах, будет работать.
  4. Листенер указывайте в maven-surefire-plugin, а не в конфиге testng.
  5. Т.к. reportng не особо гонится за изменениями в testng и velocity, возможно вам придется пересобрать либу с новыми версиями. В противном случае, возможно придется использовать более раннюю версию velocity и таки оставить эксклужен.

(Lyubov Averina) #3
  1. да, не стала упоминать - был он
  2. пробовала так и так, результат один - но ок, буду в листенере
  3. ого! спасибо за совет, в жизни бы не догадалась что сложные гайды устарели

взяла последние версии, без всяких исключений, и заработало:

<dependency>
  <groupId>org.uncommons</groupId>
  <artifactId>reportng</artifactId>
  <version>1.1.4</version>
com.google.inject guice 3.0

спасибо еще раз