да, запускаю тесты через Maven и Jenkins все нормально запускается но фаил с отчетом не обновляется, success. Тоже самое происходит когда я запускаю тест из eclipse при помоши мавен тест - фаил репорт не обновляется. в чем может быть проблема?
так, сама разобралась
я искала их в test-out папке, а оказывается мавен их кладёт в target\surefire-reports
сорри за беспокойство
Добрый день всем!
Создал тесты все как описано в данной теме. Но наткнулся на проблему при запуске тестов из Jenkins. Все, что сделано до Jenkins - все работает, проект собирается и тесты выполняются отлично!
В данной теме вроде писали о подобной проблеме, но я не нашел ответа для себя как это исправить.
Краткая суть проблемы: после настройки Jenkins и создании джоба, вываливаются ошибки типа (полный скрин ошибки, а так же настроек Jenkins приложил):
[INFO] Compiling 2 source files to D:\work\Eclipse\workspace\JabraProjectNew\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /D:/work/Eclipse/workspace/JabraProjectNew/src/test/java/MusicCategoryTests/PurchaseJabraSolemateMaxTest.java:[3,25] package org.testng does not exist
[ERROR] /D:/work/Eclipse/workspace/JabraProjectNew/src/test/java/MusicCategoryTests/PurchaseJabraSolemateMaxTest.java:[3,1] static import only from classes and interfaces
[ERROR] /D:/work/Eclipse/workspace/JabraProjectNew/src/test/java/MusicCategoryTests/PurchaseJabraSolemateMaxTest.java:[6,30] package org.testng.annotations does not exist
[ERROR] /D:/work/Eclipse/workspace/JabraProjectNew/src/test/java/MusicCategoryTests/PurchaseJabraSolemateMaxTest.java:[7,30] package org.testng.annotations does not exist
[ERROR] /D:/work/Eclipse/workspace/JabraProjectNew/src/test/java/MusicCategoryTests/PurchaseJabraSolemateMaxTest.java:[19,10] cannot find symbol
symbol: class Test
location: class test.java.MusicCategoryTests.PurchaseJabraSolemateMaxTest
…
Самое главное то, что после сборки и получении ошибки - тесты перестают работать даже в среде Еклипс - неважно как запускать (или просто через TestNG или используя Maven).
Помогите, пожалуйста, разобраться что не так я делаю. Огромное спасибо!
Имхо что-то связанное с порядком компиляции файлов.
pom покажите .
Положите файлы под гит, надежней же будет, потом настройте чакаут, и указывайте пути относительно проекта, с полными вечно лажа.
Зачем вообще локально всю эту лажу держать - создать гит репозиторий в гитхаб или битбакет это нынче сложно? Или потом в проекте на работе тоже будете из папки эклипса тесты собирать?
Да и дженкинс поднимать на своей тачке это как-то странно, ну уж если совсем нету ресурсов, хотя в таком случае лучше уже в виртуалбоксе развернуть образ и держать все это там. Стало ненужно - грохнул и все, и своя ось на тачке без лишнего мусора будет.
Вот же - /D:/work/Eclipse/workspace/JabraProjectNew/src/test/java/MusicCategoryTests/PurchaseJabraSolemateMaxTest.java:[3,25] package org.testng does not exist
Обратите внимание на слеш в самом начале пути, и на все остальные слеши, разве под виндой в адресной строке они в эту сторону стоят
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JabraProjectNew</groupId>
<artifactId>JabraProjectNew</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ProjMaven</name>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18</version>
<inherited>true</inherited>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
<classifier>test-sources</classifier>
</dependency>
</dependencies>
</project>
Согласен, совсем странно и неверно. Но я то ведь явно нигде не указываю эти пути с неправильными слешами. Не совсем понимаю откуда оно гребет это и где исправить.
Копайте настройки дженкинса, джобы. Старайтесь избегать полных путей, выносите пути в системные переменные, например зачем явно указывать путь к домашней директории мавена, когда можно вынести его в M2_HOME
который дженкинс прекрасно подхватит.
Настройте для данного джоба чекаут из гита - таким образом когда дженкинс стянет все файлы - он сам создаст необходимую структуру директорий и все туда окуратно сложит. И путь к pom.xml
должен выглядеть не длиннее чем pom.xml
Спасибо за советы.
А вы не вышлите понятную для меня ссылку с инструкциями как это все сделать? (не судите строго, только начинаю…) - пока я только установил Git под Windows.
На сейчас я добился запуска тестов со связкой Maven+TestNG (с использованием ReportNG)+WebDriver+Java в среде разработки.
Пушите свой код в репозиторий, берете свой фетч линк, выглядеть он будет примерно так:
git@bitbucket.org:user/repo.git
В настройках джоба есть раздел - вершен контролс, там выбираете гит, указываете свой фетч линк, указываете ssh ключи, который вам необходимо будет сгенерить, и публичный ключ добавить в свой ак на гитхабе/битбакете,
желательно ключи не парольте, так как у дженкинса были траблы с запаролеными ssh ключами.
В принципе это вся несложная процедура.
Что поразумеваете под запушить свой код в репозиторий: что именно туда нужно закидывать?, - весь проект, который у меня лежит локально на диске или определенные только файлы?
П.С: создал репозиторий на github, слил его так же локально на машину, добавил для теста файлик - все ок, синхронизация успешна. В Jenkins установил плагин Git, фетч линк есть, ключи тоже сделал.
В самом Jenkins нужно же оставлять те настройки, которые я приложил на скринах (путь к POM файлу; JDK и MAVEN)?
pom.xml
src/main/java
src/test/java
JDK и Maven настраиваются на уровне глобальных пропертей Jenkins.
Вам надо создать Maven-based job и указать root pom относительно workspace’a джинкинса. Не забывайте, что Jenkins вытащит сорсы из гита и положит проект к себе в workspace. Т.е. абсолютный путь тут не нужен.
ребята спасибо, получилось, иду на правильном пути…
Но есть один момент, сборка не совсем успешная выходит, т.к. не находит файлов почему то. Вот полный лог из Jenkins консоли:
Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\workspace\Test1
> git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git.exe config remote.origin.url git@github.com:sirj77/testJabra1.git # timeout=10
Fetching upstream changes from git@github.com:sirj77/testJabra1.git
> git.exe --version # timeout=10
using GIT_SSH to set credentials
> git.exe fetch --tags --progress git@github.com:sirj77/testJabra1.git +refs/heads/*:refs/remotes/origin/*
> git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
> git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision cf59a9c8b7b9c39954a1d2b70e8bed3a954f1921 (refs/remotes/origin/master)
> git.exe config core.sparsecheckout # timeout=10
> git.exe checkout -f cf59a9c8b7b9c39954a1d2b70e8bed3a954f1921
> git.exe rev-list aba36eed824c448ba66e61048b808d8903e2d0d7 # timeout=10
Parsing POMs
[Test1] $ "C:\Program Files\Java\jdk1.7.0_51/bin/java" -cp "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-agent-1.5.jar;D:\work\Eclipse\workspace\apache-maven-3.0.5-bin\apache-maven-3.0.5\boot\plexus-classworlds-2.4.jar" org.jvnet.hudson.maven3.agent.Maven3Main D:\work\Eclipse\workspace\apache-maven-3.0.5-bin\apache-maven-3.0.5 "C:\Program Files (x86)\Jenkins\war\WEB-INF\lib\remoting-2.48.jar" "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-1.5.jar" "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.5.jar" 50499
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f C:\Program Files (x86)\Jenkins\workspace\Test1\pom.xml clean test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ProjMaven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.testng:testng:jar:5.14.3 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.testng:testng:jar:5.14.4 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.testng:testng:jar:5.14.5 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ JabraProjectNew ---
[INFO] Deleting C:\Program Files (x86)\Jenkins\workspace\Test1\target
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ JabraProjectNew ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Program Files (x86)\Jenkins\workspace\Test1\src\main\resources
[INFO]
**[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ JabraProjectNew ---
[INFO] No sources to compile**
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ JabraProjectNew ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
**[INFO] skip non existing resourceDirectory C:\Program Files (x86)\Jenkins\workspace\Test1\src\test\resources**
[INFO]
**[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ JabraProjectNew ---
[INFO] No sources to compile**
[INFO]
[INFO] --- maven-surefire-plugin:2.5:test (default-test) @ JabraProjectNew ---
**[INFO] No tests to run.**
[JENKINS] Recording test results
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.013s
[INFO] Finished at: Wed Dec 03 13:04:47 EET 2014
[INFO] Final Memory: 18M/176M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving C:\Program Files (x86)\Jenkins\workspace\Test1\pom.xml to JabraProjectNew/JabraProjectNew/0.0.1-SNAPSHOT/JabraProjectNew-0.0.1-SNAPSHOT.pom
channel stopped
Finished: SUCCESS
Может я как-то неправильно закинул файлы на Гит? (там лежит в корне пом файл и две папки - название_папки_Tests и название_папки_Pages, в которых размещено по одному джава класу - соотв. класс для тестов и класс с логикой; пробовал я так же просто закинуть эти два джава класа в корень на Гит - аналогично).
Прочитайте про стандартную иерархию каталогов Maven проекта, и пока вы только начинаете все осваивать - старайтесь ее придерживатся.
Под гит вы должны добавить всю папку проекта, который вы создали в своей IDE. IntellijIDEA например сама добавит свои папки настроек воркспейса в gitignore, но лучше за этим проследить.
В итоге, в вашей папке с проектом под готом должно лежать следующее
pom.xml
src
Пишете код - делаете коммиты - делаете пушите - запускаете джоб - дженкинс стягивает с гита файлы - и кладет их в специально созданный для этого билда воркспейс - далее отдает команду Maven’у мавен относительно этого воркспейса сразу видит pom.xml и начинает выполнение.
Я опять натыкаюсь на ту же проблему, что и ранее (при условии, что в Гит закинуты в папку с проектом: pom.xml, src (src - > main -> java -> джава класс; src - > test -> java -> джава класс):
Started by user anonymous
Building in workspace C:\Program Files (x86)\Jenkins\workspace\Test1
> git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git.exe config remote.origin.url git@github.com:sirj77/testJabra1.git # timeout=10
Fetching upstream changes from git@github.com:sirj77/testJabra1.git
> git.exe --version # timeout=10
using GIT_SSH to set credentials
> git.exe fetch --tags --progress git@github.com:sirj77/testJabra1.git +refs/heads/*:refs/remotes/origin/*
> git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
> git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision 03b29d6c1453bece1929ba168564f5dbf21d1e6d (refs/remotes/origin/master)
> git.exe config core.sparsecheckout # timeout=10
> git.exe checkout -f 03b29d6c1453bece1929ba168564f5dbf21d1e6d
> git.exe rev-list cf59a9c8b7b9c39954a1d2b70e8bed3a954f1921 # timeout=10
Parsing POMs
[Test1] $ "C:\Program Files\Java\jdk1.7.0_51/bin/java" -cp "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-agent-1.5.jar;D:\work\Eclipse\workspace\apache-maven-3.0.5-bin\apache-maven-3.0.5\boot\plexus-classworlds-2.4.jar" org.jvnet.hudson.maven3.agent.Maven3Main D:\work\Eclipse\workspace\apache-maven-3.0.5-bin\apache-maven-3.0.5 "C:\Program Files (x86)\Jenkins\war\WEB-INF\lib\remoting-2.48.jar" "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-1.5.jar" "C:\Program Files (x86)\Jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-commons-1.5.jar" 52798
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f C:\Program Files (x86)\Jenkins\workspace\Test1\pom.xml clean test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ProjMaven 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.testng:testng:jar:5.14.3 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.testng:testng:jar:5.14.4 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.testng:testng:jar:5.14.5 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ JabraProjectNew ---
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ JabraProjectNew ---
[debug] execute contextualize
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\Program Files (x86)\Jenkins\workspace\Test1\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ JabraProjectNew ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 2 source files to C:\Program Files (x86)\Jenkins\workspace\Test1\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Program Files (x86)/Jenkins/workspace/Test1/src/test/java/PurchaseJabraSolemateMaxTest.java:[3,25] package org.testng does not exist
[ERROR] /C:/Program Files (x86)/Jenkins/workspace/Test1/src/test/java/PurchaseJabraSolemateMaxTest.java:[3,1] static import only from classes and interfaces
[ERROR] /C:/Program Files (x86)/Jenkins/workspace/Test1/src/test/java/PurchaseJabraSolemateMaxTest.java:[6,30] package org.testng.annotations does not exist
[ERROR] /C:/Program Files (x86)/Jenkins/workspace/Test1/src/test/java/PurchaseJabraSolemateMaxTest.java:[7,30] package org.testng.annotations does not exist
[ERROR] /C:/Program Files (x86)/Jenkins/workspace/Test1/src/test/java/PurchaseJabraSolemateMaxTest.java:[19,10] cannot find symbol
symbol: class Test
location: class test.java.MusicCategoryTests.PurchaseJabraSolemateMaxTest
........................
[ERROR] /C:/Program Files (x86)/Jenkins/workspace/Test1/src/test/java/PurchaseJabraSolemateMaxTest.java:[125,17] cannot find symbol
symbol: method assertEquals(java.lang.String,java.lang.String)
location: class test.java.MusicCategoryTests.PurchaseJabraSolemateMaxTest
[INFO] 23 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.631s
[INFO] Finished at: Wed Dec 03 17:41:20 EET 2014
[INFO] Final Memory: 24M/173M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project JabraProjectNew: Compilation failure: Compilation failure:
[ERROR] /C:/Program Files (x86)/Jenkins/workspace/Test1/src/test/java/PurchaseJabraSolemateMaxTest.java:[3,25] package org.testng does not exist
Вроде все очевидно. Проблемы с определением testng. Причем, оно ссылается на какую-то древнюю версию. У вас вообще локально тесты компилируются via maven? И зачем вам reportng, если вы не подключаете его листенеры? Поубирайте test scope отовсюду. Я понимаю конечно, что копипаст - наше все, но он далеко не всегда работает.
Спасибо большое! Вышло. Тесты локально у меня компилились. ReportNG как раз я хотел использовать, листенеры я подключал. Как вы и сказали, убрал везде test scope. И еще раскоментил тег exclusion и закоментил suiteXmlFiles, вышло все удачно, видимо из-за этого и были проблемы, вот ПОМ:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JabraProjectNew</groupId>
<artifactId>JabraProjectNew</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ProjMaven</name>
<repositories>
<repository>
<id>java-net</id>
<url>http://download.java.net/maven/2</url>
</repository>
</repositories>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<inherited>true</inherited>
<configuration>
<properties>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<property>
<name>listener</name>
<value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
</property>
</properties>
<workingDirectory>target/</workingDirectory>
<forkMode>always</forkMode>
<!-- <suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles> -->
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.4</version>
<!-- <scope>test</scope> -->
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
<!-- <classifier>test-sources</classifier> -->
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<!-- <scope>test</scope> -->
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>
<dependency>
<groupId>velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.4</version>
<!-- <scope>test</scope> -->
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<!-- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
<classifier>tests</classifier>
</dependency> -->
</dependencies>
</project>
Единственное еще остались ворнинги, которые не влияют на успешность сборки, решения нашел, н опока не помогло избавиться от них:
- [WARNING] Using platform encoding (Cp1251 actually)…
- log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See Apache log4j 1.2 - Frequently Asked Technical Questions for more info.
Первый ворнинг решается добавлением проперти с кодировкой.
Остальное связано с ненастроенным log4j.
П.С. Для “спасибо” есть спец. кнопка.
Подскажите пожалуйста, прикрутил Allure, а в отчете пусто в чем проблема?
Установил плагин, путь указал 08.28.2018-17.28.55
А еще, когда запускаю тесты в jenkins, почему у меня браузер локально не открывается и не вижу тесты?