t.me/atinfo_chat Telegram группа по автоматизации тестирования

Разбираемся в запуске тестов в Jenkins (+Maven +TestNG +WebDriver на Java) или туториал новичка

jenkins
testng
webdriver
java
maven
Теги: #<Tag:0x00007f9c4d5de328> #<Tag:0x00007f9c4d5de1c0> #<Tag:0x00007f9c4d5de030> #<Tag:0x00007f9c4d5ddea0> #<Tag:0x00007f9c4d5ddd60>

(Sergey_Kot) #62

Спасибо за советы.
А вы не вышлите понятную для меня ссылку с инструкциями как это все сделать? (не судите строго, только начинаю…) - пока я только установил Git под Windows.
На сейчас я добился запуска тестов со связкой Maven+TestNG (с использованием ReportNG)+WebDriver+Java в среде разработки.


(heartwilltell) #63

Пушите свой код в репозиторий, берете свой фетч линк, выглядеть он будет примерно так:

git@bitbucket.org:user/repo.git

В настройках джоба есть раздел - вершен контролс, там выбираете гит, указываете свой фетч линк, указываете ssh ключи, который вам необходимо будет сгенерить, и публичный ключ добавить в свой ак на гитхабе/битбакете,
желательно ключи не парольте, так как у дженкинса были траблы с запаролеными ssh ключами.

В принципе это вся несложная процедура.


(Sergey_Kot) #64

Что поразумеваете под запушить свой код в репозиторий: что именно туда нужно закидывать?, - весь проект, который у меня лежит локально на диске или определенные только файлы?
П.С: создал репозиторий на github, слил его так же локально на машину, добавил для теста файлик - все ок, синхронизация успешна. В Jenkins установил плагин Git, фетч линк есть, ключи тоже сделал.
В самом Jenkins нужно же оставлять те настройки, которые я приложил на скринах (путь к POM файлу; JDK и MAVEN)?


(heartwilltell) #65

pom.xml
src/main/java
src/test/java


(Sergey Korol) #66

JDK и Maven настраиваются на уровне глобальных пропертей Jenkins.
Вам надо создать Maven-based job и указать root pom относительно workspace’a джинкинса. Не забывайте, что Jenkins вытащит сорсы из гита и положит проект к себе в workspace. Т.е. абсолютный путь тут не нужен.


(Sergey_Kot) #67

ребята спасибо, получилось, иду на правильном пути…
Но есть один момент, сборка не совсем успешная выходит, т.к. не находит файлов почему то. Вот полный лог из 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, в которых размещено по одному джава класу - соотв. класс для тестов и класс с логикой; пробовал я так же просто закинуть эти два джава класа в корень на Гит - аналогично).


(heartwilltell) #68

Прочитайте про стандартную иерархию каталогов Maven проекта, и пока вы только начинаете все осваивать - старайтесь ее придерживатся.

Под гит вы должны добавить всю папку проекта, который вы создали в своей IDE. IntellijIDEA например сама добавит свои папки настроек воркспейса в gitignore, но лучше за этим проследить.
В итоге, в вашей папке с проектом под готом должно лежать следующее

pom.xml
src

Пишете код - делаете коммиты - делаете пушите - запускаете джоб - дженкинс стягивает с гита файлы - и кладет их в специально созданный для этого билда воркспейс - далее отдает команду Maven’у мавен относительно этого воркспейса сразу видит pom.xml и начинает выполнение.


(Sergey_Kot) #69

Я опять натыкаюсь на ту же проблему, что и ранее (при условии, что в Гит закинуты в папку с проектом: 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

(Sergey Korol) #70

Вроде все очевидно. Проблемы с определением testng. Причем, оно ссылается на какую-то древнюю версию. У вас вообще локально тесты компилируются via maven? И зачем вам reportng, если вы не подключаете его листенеры? Поубирайте test scope отовсюду. Я понимаю конечно, что копипаст - наше все, но он далеко не всегда работает. :wink:


(Sergey_Kot) #71

Спасибо большое! Вышло. Тесты локально у меня компилились. 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 http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

(Sergey Korol) #72

Первый ворнинг решается добавлением проперти с кодировкой.
Остальное связано с ненастроенным log4j.

П.С. Для “спасибо” есть спец. кнопка. :wink:


(stek) #73

Подскажите пожалуйста, прикрутил Allure, а в отчете пусто в чем проблема?
Установил плагин, путь указал https://www.screencast.com/t/hqqWesy8Ii4

А еще, когда запускаю тесты в jenkins, почему у меня браузер локально не открывается и не вижу тесты?