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

Запуск java методов из testNG


(sanches) #1

Доброго всем времени суток!

Все цыфры примерные.

На проекте столкнулся с проблемой - есть много тестов (использующие Selenium) , которые запускаются посредством maven в Jenkins'e.  Но текущая архитектура проекта построена таким образом, что  сами тестовые сценарии описаны относительно мелкими  методами  и есть некий testsuite класс, собирающий из них определенную последовательность,  причем собирающий с помощью DataProvider. Этот testsuite класс просто java класс, только помеченный как testng тест и им можно управлять через maven, и таких testng тестов около 10.  Такая структура просто позволяла создавать свои сценарные шаблоны разных уровней и удобно писать тесты. Но сейчас остро встал вопрос по отчетности. В данный момент всех сценарных блоков около 1000, но в любом репорте по сути будет отражаться  всего 10 (ну или по 100 с одним именем). То есть Jenkins выводит список одних и тех же методов с разными результатами. 

Так вот, меня интересует вопрос - возможно ли такую последовательности, описаную в 10 testsuite классах,  перенести в testng пространство, для того чтобы управлять результатами тестов, при этом значительно не касаясь самих сценариев. Заранее прошу прощения за столь сложное изложение:)

 


(Shaman) #2
попробуй что-то на подобии этого:

<test name="Regression1">
  <classes>
    <class name="test.IndividualMethodsTest">
      <methods>
        <include name="testMethod" />
      </methods>
    </class>
  </classes>
</test>

 

вынеси это в отдельный testng.xml файл

 

 


(Шевченко Владислав) #3

нужно создать testng.xml типа:

 

<suite name="SuiteName">
    <test name="TestName_1" preserve-order="true" >       
        <classes>
            <class name="test.IndividualMethodsTest">
                <methods>
                    <include name="testMethod"/>                  
                </methods>
            </class>
        </classes>
    </test>
    <test name="TEstName_2" preserve-order="true" >
        <classes>
            <class name="test.IndividualMethodsTest">
                <methods>
                <include name="testMethod"/>
                </methods>
            </class>
        </classes>
    </test>
</suite>
 
присоединить к maven следующим образом:
в pom.xml файл в раздел <plugins> нужно добавить 
 
<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12.4</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>testng.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
 
если вы об этом конечно..
 

(sanches) #4

тогда, если делать через testng.xml придется добавлять все методы, которых слишком много

есть что то типа того:

@Dataprovider

public Object[][] dp(){

      {    data = new Object[][]{

                    new Object[]{Login.class.getMethod("login")},
                    new Object[]{StartApplicationTest.class.getMethod("start")},
                    new Object[]{FundTimeLine.class.getMethod("fundTimeLineTest")},
                   .....................................................................................
                   здесь куча методов
            };
        }
        return data;

}

 

@Test(dataprovider="dp")

public void runTest(Object testName){

   startTestBuilder(testName);

}

 

Получается, что тестовый метод один - runTest, а тестовые сценарии подаются как параметры testName. Но теперь нужно, чтобы эти testName воспринимались testNG как полноценные тесты. Попробую вариант с testng.xml, но придется что то придумать с миграцией "из кода в строку".

 


(Shaman) #5

посмотри в сторону тега <parameter> с его помощью можно пробрасывать нужные тебе параметры в код из testng.xml