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

[Resolved] Настройка и запуск тестов Jenkins + maven + git

Теги: #<Tag:0x00007fd7686c7b30> #<Tag:0x00007fd7686c7a18> #<Tag:0x00007fd7686c7900>

Привет всем. Сегодня столкнулся с задачей настройки запуска теcтов на Jenkins.
Тесты написаны на Java + jUnit.
Проблема состоит в настройке jenkins. Нигде не могу найти толкового гайда по настройке дженкинса именно с моими запросами.
Итак: Есть написан тест и его нужно запустить в jenkins.

В Jenkins лог выводит BUILD SUCCESS но, я так понимаю, он не запускает сам тест. Видимо его нужно где-то указать, что является для меня загадкой. Кто подскажет, как правильно настроить Jenkins проект, что бы он корректно работал с maven и git? Все нужные логи и данные я предоставлю. Спасибо

Из описания не совсем понятно, как все-таки пытались настраивать Jenkins.
В самом общем случае вам нужно создать maven job, установить git плагины, указать путь к вашему репозиторию c креденшалами, в build разделе надо указать относительный путь к pom.xml + goals. Этого должно хватить для тестового запуска.

2 Симпатий

Чтобы Maven понимал ваш код как тесты, название класса должно содержать слово Test, например Login_Test.java

1 Симпатия

Непонятно, что у Вас есть в pom.xml.
похоже, что Вы не указали, чем вы будете запускать тесты.
Я вот, например, запускаю их с помощью maven-failsafe-plugin. Соответственно у меня есть следующее в pom.xml:

<project>
[...]
<build>
<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.18.1</version>
       <configuration>
          <includes>
            <include>*Test.java</include>
          </includes>
        </configuration>
      </plugin>
    </plugins>
</build>
[...]
</project>

Для начала попробуйте запустить тесты только с помощью Maven. Если получится прогнать тесты уже можно добавлять сверху Jenkins.

Да, структура каталогов проекта с тестами и содержание pom.xml очень поможет в решении задачи

1 Симпатия

Maven запускает тесты без проблем. Сейчас вся загвоздка в Jenkins’е.
POM.xml


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>ru.stqa.selenium</groupId>
      <artifactId>webdriver-factory</artifactId>
      <version>1.1.43</version>
    </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
      </testResource>
    </testResources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin> 
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.17</version>
        <configuration>
          <includes>
            <include>**/*TestSuite.java</include>
              <include>**/*IntegrationSuite.class</include>
          </includes>
          <systemPropertyVariables>
            <application.properties>/application.properties</application.properties>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

Мне важно увидеть настройки JOB’a в дженкинсе.

Чем вас не устроил ответ? Неужели так сложно самому попробовать? Или вам нужен скрин секции Source Code Management с чекнутым Git и указанным URL / creds?

Или вы не нашли секции Build?

Если у вас уже создан maven job, я удивляюсь, какая проблема просто ради интереса пройтись по всем параметрам и почитать help?

По-моему, там все настолько очевидно, что настройка должна занять не больше 30 минут, если это первый раз. Из которых 25 вы потратите на чтение хэлпа. Исключением может быть только распространенная проблема неверно подключенных ключей для Git.

4 Симпатий

Тесты лежат в src/test/java?

Да, тесты лежат src/test/java в пекеджах.

Я написал сюда после целого дня мучений) Я все это указал в настройках. Билд билдится успешно, но тестов он не видит. Тут проблема или pom.xml или другая. Вот и ищу здесь подсказку.

С чего вы делаете вывод, что он не видит тестов?

попробуйте немного странный способ: добавте System.out.println("test test ") в ваш тест и посмотрите отбразится ли она в console дженкинса

У меня есть в тесте вывод лога в консоль. В дженкинсе я его не вижу. Я уверен, что ошибка у меня либо в pom.xml либо в классе TestSuite где указано какие тесты нужно выполнять.
Вот лог который выводит дженкинс

Started by user anonymous
Building in workspace /Users/bpv/.jenkins/jobs/Login Test/workspace

/usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
/usr/bin/git config remote.origin.url /Users/bpv/vicman/webpresence/.git # timeout=10
Fetching upstream changes from /Users/bpv/vicman/webpresence/.git
/usr/bin/git --version # timeout=10
/usr/bin/git -c core.askpass=true fetch --tags --progress /Users/bpv/vicman/webpresence/.git +refs/heads/:refs/remotes/origin/
/usr/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10
/usr/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 4c1cecc0c51ffb2995ba45a017361b7f5b93dc29 (refs/remotes/origin/master)
/usr/bin/git config core.sparsecheckout # timeout=10
/usr/bin/git checkout -f 4c1cecc0c51ffb2995ba45a017361b7f5b93dc29
/usr/bin/git rev-list 4c1cecc0c51ffb2995ba45a017361b7f5b93dc29 # timeout=10
Parsing POMs
[PageIsTests] $ /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home/bin/java -cp /Users/bpv/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-agent-1.6.jar:/usr/local/apache-maven-3.2.3/boot/plexus-classworlds-2.5.1.jar:/usr/local/apache-maven-3.2.3/conf/logging jenkins.maven3.agent.Maven32Main /usr/local/apache-maven-3.2.3 /Users/bpv/.jenkins/war/WEB-INF/lib/remoting-2.49.jar /Users/bpv/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-interceptor-1.6.jar /Users/bpv/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.6.jar 60423
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f /Users/bpv/vicman/webpresence/PageIsTests/pom.xml clean test
[INFO] Scanning for projects…
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building PageIsTests 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] — maven-clean-plugin:2.5:clean (default-clean) @ PageIsTests —
[INFO] Deleting /Users/bpv/vicman/webpresence/PageIsTests/target
[INFO]
[INFO] — maven-resources-plugin:2.6:resources (default-resources) @ PageIsTests —
[INFO] Using ‘UTF-8’ encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] — maven-compiler-plugin:3.1:compile (default-compile) @ PageIsTests —
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] — maven-resources-plugin:2.6:testResources (default-testResources) @ PageIsTests —
[INFO] Using ‘UTF-8’ encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO]
[INFO] — maven-compiler-plugin:3.1:testCompile (default-testCompile) @ PageIsTests —
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 16 source files to /Users/bpv/vicman/webpresence/PageIsTests/target/test-classes
[INFO]
[INFO] — maven-surefire-plugin:2.17:test (default-test) @ PageIsTests —
[JENKINS] Recording test results
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.283 s
[INFO] Finished at: 2015-02-04T14:14:48+02:00
[INFO] Final Memory: 23M/207M
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[JENKINS] Archiving /Users/bpv/vicman/webpresence/PageIsTests/pom.xml to com.is.page/PageIsTests/1.0-SNAPSHOT/PageIsTests-1.0-SNAPSHOT.pom
/Users/bpv/vicman/webpresence/PageIsTests/pom.xml is not inside /Users/bpv/.jenkins/jobs/Login Test/workspace/Users/bpv/vicman/webpresence/PageIsTests/; will archive in a separate pass
channel stopped
Finished: SUCCESS

Интереса ради, уберите includes из maven-surefire-plugin и обзовите ваши классы согласно конвеншенам. Ибо такие вещи выглядят весьма странно: <include>**/*IntegrationSuite.class</include>

1 Симпатия

Хах, убрал и тест пошел :smile:

Ну тогда начинать надо было отсюда. И дженкинс тут не причем.

3 Симпатий

Я так понимаю, что он сейчас запускает мне просто файл LoginTest и все остальные файлы, которые заканчиваются на …test. А как мне прикрепить suite, что бы он с него считывал порядок запуска тестов?

Я использую TestNG, так что не подскажу, как JUnit работает со suites / ordered tests через maven-surefile-plugin.

1 Симпатия

Подскажи, как работает TestNG перейти на него проблемы нет.