[英]How to Run TestNG Tests on Jenkins
我正试图从Jenkins运行TestNG测试(在一个包含的Java项目中),但没有运气。
似乎Jenkins的TestNG插件( https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin )只发布了TestNG测试的结果,但实际上并没有运行测试类......或者我错了吗?
在任何情况下,我如何在Jenkins的TestNG项目中实际运行TestNG测试,或者甚至可能? 例如,我是否必须使用命令行语句或批处理文件(在Windows Server 2008上)?
任何帮助非常感谢。
PS我尝试在Jenkins中输入一个post-build命令行,以便运行TestNG测试项目,但很难找到TestNG的类路径。 我发布了一个关于从命令行运行TestNG的早期问题,我无法正常工作,所以我放弃了这条路线:
完成此任务有两个步骤: -
步骤1:-
转到localhost:8080 / configure(Jenkins配置部分)
现在转到JDK部分并取消选中自动安装(如果你没有取消选中那么它会在每次可用时下载最新的java,并且可能导致构建失败)
将JAVA_HOME放在JAVA_HOME部分的名称部分和jdk主路径中
第2步:-
转到Jenkins并添加新项目,同时选择“Free Style Project”并单击Ok。
单击“高级项目选项”中的“高级”
现在选中选项: - “使用自定义工作区”并在“目录”部分中指定项目绝对路径
现在转到Jenkins并选择您的Jenkins项目并单击Build :)
我使用gradle从Jenkins运行我的testNG测试。 看看gradle文档 。
我使用配置xml文件运行testNG测试。 看一下testNG文档 。
有很多要涵盖,所以我建议阅读这些来源,但我会从我的一个配置中提供一些相关的部分。
我的build.gradle中的相关部分
tasks.withType(Test) {
useTestNG {
useDefaultListeners = true
}
options {
outputDirectory = file('test-report')
listeners << 'org.uncommons.reportng.JUnitXMLReporter'
}
testLogging.showStandardStreams = true
systemProperties System.getProperties()
systemProperty "org.uncommons.reportng.escape-output", "false"
systemProperty "org.uncommons.reportng.title", "Test Report"
ignoreFailures = true
}
task Smoke_Test(type: Test) {
description "SmokeTest"
options.suites("resources/testng-smoketest.xml")
ignoreFailures = false
}
我的testNG xml如上所述'testng-smoketest.xml'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Smoke Tests" >
<test name="BootCheck" parallel="false" thread-count="1">
<classes>
<class name="com.x.automation.y.tests.smoke.BootCheck" />
</classes>
</test>
</suite>
从Jenkins开始,作为“执行shell”构建步骤运行gradle任务,为方便起见,我使用gradle包装器。
./gradlew clean Smoke_Test
确保您位于正确的目录中,'Smoke_Test'是build.gradle中指定的名称。
您可以使用testNG Jenkins插件来保存结果。
我还建议使用reportng来更好地格式化测试报告,这些报告也可以使用HTML Publisher插件在Jenkins中显示和保存。
尝试首先从本地计算机上的CLI运行,尝试调试从Jenkins运行时会让你发疯。
如上所述,请使用以下ant脚本运行TestNG单元测试。 请调整以下代码以满足您的要求。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build" name="Ant Play">
<property name="classes.dir" value="bin" />
<property name="report.dir" value="test-output" />
<path id="classpath">
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement path="${basedir}\${classes.dir}"/>
</path>
<target name="init">
<mkdir dir="${classes.dir}"/>
<copy includeemptydirs="false" todir="${classes.dir}">
<fileset dir="src">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
<target name="clean">
<delete dir="${classes.dir}"/>
</target>
<target depends="clean" name="cleanall"/>
<target depends="build-project" name="build"/>
<target depends="init" name="build-project">
<echo message="${ant.project.name}: ${ant.file}"/>
<javac debug="true" includeantruntime="false" destdir="${classes.dir}">
<src path="src"/>
<classpath refid="classpath"/>
</javac>
</target>
<target depends="build" name="runTests" description="Running tests" >
<echo>Running Tests...</echo>
<taskdef resource="testngtasks" classpathref="classpath"/>
<testng outputDir="${report.dir}"
haltonfailure="true"
useDefaultListeners="false"
listeners="org.uncommons.reportng.HTMLReporter"
classpathref="classpath">
<xmlfileset dir="${basedir}" includes="testng.xml"/>
<!--<classfileset dir="${classes.dir}" includes="**/*.class" />-->
</testng>
</target>
</project>
如果您遇到任何问题,请告诉我。 顺便说一句,请使用Jenkins ant插件/任务来运行此脚本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.