Подскажите где я упускаю момент настройки : не могу запустить Selenium +Java тесты через Maven в терминале. В IDE стартует, Testng стартует, все вместе через мавен нет

java
selenium
testng
maven
Теги: #<Tag:0x00007f7b70b17770> #<Tag:0x00007f7b70b175e0> #<Tag:0x00007f7b70b17450> #<Tag:0x00007f7b70b17298>

(Александр Кривенко) #1

Не могу запустить Java тесты через Мавен в командной строке.

Здравствуйте!
Я начал разбираться в автоматизации и сделал маленький фремворк : Selenium + Java + TestNG + Maven. И видимо где-то я пропускаю в настройках что-то, но у меня не стартуют тесты через Мавен.
Создал Мавен проект, прикрепил зависимости в pom фаил : Selenium - server , Testng.
Добавил туда же плагины : maven-compiler , maven-surefire .
Создал testng.xml c простой настройкой.
Как результат тесты запускаются в IDE , Run as Testng , но когда хочу запустить через maven, то ни в IDE, ни в терминале тесты не стартуют: не запускается браузер и не выполняются шаги.
Методы с тестами оканчиваются на Test.
Классы оканчиваются на TestClass
Мавен стоит на машине :
Apache Maven 3.5.4
Maven home: /usr/local/Cellar/maven/3.5.4/libexec

Если необходима еще информация, пришлю.

pom.xml:

<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>Selenium</groupId>
    <artifactId>SeleniumFWv2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>ProjectF/W2</name>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.0.0-M2</version>
                    <configuration>
                        <suiteXmlFiles>
                            <suiteXmlFile>testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>


    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.9.0</version>
        </dependency>
        

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.8</version>

        </dependency>
    </dependencies>


</project>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Test1"   verbose="2"  preserve-order="true"  thread-count="1"  >

    <test name="AllTest"  >
        <packages>
            <package name="Tests.DashBoardTestClass.DashBoardsTests"/>
        </packages>
    </test>
   
    
</suite>

testng.xml находится в корне проекта.

Architecture

Как итог мавен выдает следующее.

INFO] -----------------------< Selenium:SeleniumFWv2 >------------------------
[INFO] Building ProjectF/W2 1.0-SNAPSHOT
[INFO] --------------------------------[ pom ]---------------------------------
[DEBUG] Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
[DEBUG] Lifecycle clean -> [pre-clean, clean, post-clean]
[DEBUG] Lifecycle site -> [pre-site, site, post-site, site-deploy]
[DEBUG] === PROJECT BUILD PLAN ================================================
[DEBUG] Project:       Selenium:SeleniumFWv2:1.0-SNAPSHOT
[DEBUG] Dependencies (collect): []
[DEBUG] Dependencies (resolve): []
[DEBUG] Repositories (dependencies): [central (https://repo.maven.apache.org/maven2, default, releases)]
[DEBUG] Repositories (plugins)     : [central (https://repo.maven.apache.org/maven2, default, releases)]
[DEBUG] =======================================================================
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.087 s
[INFO] Finished at: 2018-12-19T19:43:24+03:00
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

Буду благодарен, если подскажите что не так. Спасибо!


(Сергей Кузьмин) #2

@Aleksandr_Krivenko попробуйте вообще убрать testng.xml
surefire сам долж найти по [@test] аннотации тесты :slight_smile:

@Test(enabled = true)
	public void aTest() {
		//
.... 
}

у меня DOM testng.xml другой и ваш мне что то ненравится

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Sample" thread-count="1">
  <test name="Test">
    <classes>
      <class name="com.github.sergueik.selenium.CodeMirrorTest">
    </class>
    </classes>
  </test>
</suite>

подставьте ваш package но сначала вовсе без - если не найдет то проблема свероянтее с аннотациями


(Александр Кривенко) #3

Спасибо за ответ. Я попробую сегодня ваши советы.


(Александр Кривенко) #4

Что-то не взлетело у меня ничего… как присылал один и тот же ответ , так и присылает…


(Александр Кривенко) #5

Я testng.xml отредактировал и теперь он выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Sample"  >
    <test name="Test">
        <classes>
            <class name="Tests.DashBoardTestClass.DashBoardsTests.SwitchToAnalyticPageTest">
                <methods>
                    <include name="getAnalyticPageTest"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>

Результата не дало. Пробовал вообще убрать в pom файле упоминание testng.xml то же результата нет.

Аннотация тестов выглядит так :

  @Test (enabled = true)
    public void getAnalyticPage(){
        DashBoardPage dashBoardPage =new DashBoardPage(webdriver);
        DashBoardAnalyticPage dashBoardAnalyticPage= dashBoardPage.getDashBoardAnalyticPage(webdriver);
        Assert.assertEquals(URL,super.getTitleOfPage());

(Dmitry Astanin) #6

Можно полный лог мавена?


(Сергей Кузьмин) #7

может сделать наоб - возьмите работащий п-т и вложите свой код. что то мне не нравится ваш Case Sensitive project path - в java пути в target/casses соответствуют package то есть надо указывать то что есть - surefire шутить не любит:

cat testng.xml
/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="test" parallel="com.sergueik.github.tests" thread-count="1">
  <listeners>
    <listener class-name= "com.github.sergueik.tests.retry.Reporter" />
  </listeners>
  <test verbose="1" name="nameCanBeArbitrary">
    <packages>
      <package name="com.sergueik.github.tests"/>
    </packages>
  </test>
</suite>

ls -tr target\test-classes\com\github\sergueik\tests
BasicTestWithRetry.class

например если сделть опачатку и назвать по разному в проекте и в XML напр.

      <package name="com.github.john.tests"/>

то все скомпилится но в конце кина не будет

Running TestSuite
ERROR: TEST LIST IS EMPTY
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.925 sec

а когда пути соответствуют то все что помечено аннотацией @test в класссе будет запущено (нам сейчас не важно что там правильно отработало а что нет - игра было начально вокруг вызова retry клссов и методов и в последней версии это может работает может и нет я специально не настраивал):

Results :

Failed tests:   findEvents(com.github.sergueik.test
t is not currently visible and so may not be intera
  findFeatures(com.github.sergueik.tests.BasicTestW
lement: {"method":"css selector","selector":"[href=
  findLive(com.github.sergueik.tests.BasicTestWithR
ly visible and so may not be interacted with
  findMusic(com.github.sergueik.tests.BasicTestWith
tly visible and so may not be interacted with

Tests run: 16, Failures: 4, Errors: 0, Skipped: 12

визуально легко так ошибиться поэтому начните с рабочего проекта
кстати запустите руками из шелла или cmd перед тем как скармливать дж-су

путь к
проекту

это собственно директория:

/c/developer/sergueik/selenium_java/testng-retry-failed

в “warehouse project”

https://github.com/sergueik/selenium_java.git

(Александр Кривенко) #8

Спасибо за помощь . Ваши файлы помогли. Я переделал проект под себя . Пока все запускается :grinning: