Перейти к содержимому

Фотография

TestNG + ant + jenkins (ну и selenium, ессесина)

testng ant jenkins

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 homyak

homyak

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алексей
  • Город:Домодедово


Отправлено 16 мая 2016 - 14:00

Добрый день, коллеги!

Писал я тесты и использовал их самостоятельно запуская из IDE и жил не тужил. Но возникла потребность в постоянном автоматическом прогоне тестов. Почитал статейки, литературу и вооружившись ant'ом решил гонять их на jenkins'е

Настроил build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="TestNGTesting.jar" basedir = ".">
    
	<!--========================================================================
								Properties
	=========================================================================-->
	
	<property name="src.dir" location="${basedir}/src"/>
	<property name="bin.dir" value="${basedir}/bin"/>
	<property name="lib.dir" location="${basedir}/lib"/>
	<property name="build.dir" value="${basedir}/build"/>
	<property name="jar.name" value="TestNGTesting.jar"/>
	<property name="report.dir" value="${basedir}/report"/>
	<property name="TestNG.report.dir" value="${report.dir}/TestNGreport"/>
	
	<!--========================================================================
								Classpath
	=========================================================================-->
	<path id="classpath">
	        <pathelement path="${classpath}"/>
	        <pathelement location="${selenium.jars}/selenium-java-2.53.0.jar"/>
	        <pathelement location="${selenium.jars}/selenium-server-standalone-2.53.0.jar"/>
	        <pathelement location="${selenium.jars}/avalon-framework-4.1.4.jar"/>
	        <pathelement location="${selenium.jars}/testng-6.8.7-sources.jar"/>
	        <pathelement location="${selenium.jars}/testng-6.8.7.jar"/>
        	<pathelement location="${ECLIPSE_HOME}plugins/org.testng.eclipse_6.9.11.201604020423/lib/testng.jar"/>
        	<pathelement location="${ECLIPSE_HOME}plugins/org.testng.eclipse_6.9.11.201604020423/lib/jcommander.jar"/>
       		<pathelement location="${ECLIPSE_HOME}plugins/org.testng.eclipse_6.9.11.201604020423/lib/bsh-2.0b4.jar"/>
       		<pathelement location="${ECLIPSE_HOME}plugins/org.testng.eclipse_6.9.11.201604020423/lib/snakeyaml.jar"/>
	</path>

	    
	<!--========================================================================
					Creating folders
	=========================================================================-->
		
	<target name = "MakeDirs" description = "Making of the auxillary dirs">
		<mkdir dir="${report.dir}"/>
    </target>
   
	<!--========================================================================
				Compilation of the classes
 	=========================================================================-->
	
	<target name = "compile" description = "Compilation of the classes">
		
		<javac includeantruntime = "false" destdir="${bin.dir}" debug="off">
	        <src path="${src.dir}"/>
	        <!--Откуда берем-->
			<classpath id="classpath">
	            <fileset dir="${lib.dir}">
	            	<include name="selenium-java-2.53.0.jar"/>
	            	<include name="selenium-server-standalone-2.53.0.jar"/>
	            	<include name="avalon-framework-4.1.4.jar"/>
	            	<include name="testng-6.8.7-sources.jar"/>
	            	<include name="testng-6.8.7.jar"/>
	            </fileset>
	        </classpath>
		</javac>

    </target>
	
	<!--========================================================================
					   TESTING
	=========================================================================-->  
	<taskdef resource="testngtasks" classpathref="classpath" />
	<target name="run" description="Start tests" depends="compile">
			<mkdir dir="${TestNG.report.dir}"/>
			<testng outputdir="${TestNG.report.dir}" classpathref="classpath" >
				<xmlfileset dir="${basedir}" includes="testng.xml"/>
			</testng>
	</target>		
</project>

Так как нет более опытных коллег под рукой, оценить правильность и оптимальность возможности не имею

Теперь к проблеме:

Вот на эту строку

<testng outputdir="${TestNG.report.dir}" classpathref="classpath" >

ругается так:

BUILD FAILED
C:\workspace\test\build.xml:69: Problem: failed to create task or type testng
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

К сожалению, либо я не умею пользоваться поиском, либо описаний решения проблемы не так уж и много.

Прошу отнестись с пониманием, опыта в такой настройке не имею, только постигаю


  • 0

#2 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 16 мая 2016 - 14:23

Очень давно не работал с ANT

 

classpathref="classpath"

 

укажи просто здесь полный путь

 

classpathref="path_to_testng.jar"


  • 0

#3 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 17 мая 2016 - 11:15

А почему не Мавен? Если гуглить какие-либо мануалы, то везде Мавен. Ант используют только там, где его начинали использовать изначально.


  • 1

#4 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 17 мая 2016 - 13:25

А почему не Мавен? Если гуглить какие-либо мануалы, то везде Мавен. Ант используют только там, где его начинали использовать изначально.

 

Ну не всегда, Ant + Ivy было неплохо.

Но это к теме не относится, а ТС куда-то пропал...


  • 1

#5 homyak

homyak

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алексей
  • Город:Домодедово


Отправлено 17 мая 2016 - 13:41

Я тут, решал сложившуюся проблему, вот что вышло:

    <taskdef resource="testngtasks" classpathref="classpath"/>
	<target name="testng" description="Start tests" depends="compile">
			<mkdir dir="${TestNG.report.dir}"/>
			<testng haltonfailure="true" outputdir="${TestNG.report.dir}" >
				<classpath>
					<path id="classpath" />
					<pathelement location="${TestNG.report.dir}" />
					<pathelement location="${build.dir}" />
				</classpath>
				<classfileset dir="${build.dir}">
					
				</classfileset>
				<xmlfileset dir="${basedir}" includes="testng.xml"/>
			</testng>
	</target>

Убрал лишнее, добавил classpath, пока только не до конца разобрался с необходимостью <classfileset dir="${build.dir}">, если подскажете, буду благодарен

Запуск работает, теперь нужно доделать зависимости и буду пытаться запустить это в jenkins'e

 

По поводу, почему ant, а не maven, ну во-первых, так исторически сложилось :smile: , недавно пришел на новое место и у них автотесты реализованы именно так, а я считаю, что хорошо, конечно приходить со своей метлой и начинать мести по своему, но всё ж стоит сначала разобраться в том, как было до этого, а потом уже менять, внедрять новое.

Во-вторых, поглядываю как раз в сторону ant + ivy, перелопатил много статей, страниц и прочего, попробовал создать мавен проект и всё ж пришел к тому, что пока остановлюсь на ant, а в дальнейшем буду пробовать добавить ivy.

 

Надо еще сами автотесты привести в порядок, так что работы много)) Думаю, что частенько теперь буду беспокоить вопросами.

 

Спасибо за советы и комментарии


  • 0

#6 appmen

appmen

    Опытный участник

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 18 мая 2016 - 12:36

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


  • 0

#7 homyak

homyak

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Алексей
  • Город:Домодедово


Отправлено 20 мая 2016 - 14:53

Подскажите, почему может возникать такая ошибка?
Подозреваю, что не хватает либо чего-то в testng.xml, либо что-то неправильно складываю в build.xml или может зависимостей не хватает.

[testng] [TestNGClassFinder] Warning: Can't link and determine methods of class test.cases.NewTP_CheckElements
[testng] [[TestNGClassFinder]] Unable to read methods on class test.cases.NewTP_CheckElements - unable to resolve class reference org/apache/avalon/framework/configuration/ConfigurationException

В общем, прошу помощи :smile:

 

На всякий случай скидываю testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Default suite">
<parameter name="configFile" value="NewTP_application.properties"></parameter>
  <test verbose="2" name="NewTP_CheckElements">
    <classes>
      <class name="test.cases.NewTP_CheckElements"/> <!-- Тут лежат тесты -->
    </classes>
  </test>
</suite>

  • 0



Темы с аналогичным тегами testng, ant, jenkins

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных