如何在Jenkins上运行TestNG测试

时间:2013-05-28 01:04:58

标签: java jenkins testng jenkins-plugins

我正在尝试从Jenkins运行TestNG测试(在一个包含的Java项目中),但没有运气。

似乎Jenkins的TestNG插件(https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin)只发布了TestNG测试的结果,但实际上并没有运行测试类......或者我错了?

在任何情况下,我如何在Jenkins的TestNG项目中实际运行TestNG测试,或者甚至可能?我是否必须使用命令行语句或批处理文件(在Windows Server 2008上),例如?

任何帮助都非常感激。

P.S。我尝试在Jenkins中输入一个post-build命令行,以便项目运行TestNG测试但是很难找到TestNG找不到类路径。我发布了一个关于从命令行运行TestNG的早期问题,我无法正常工作,所以我放弃了这条路线:

How to run TestNG from command line

3 个答案:

答案 0 :(得分:7)

完成此任务有两个步骤: -

第1步: -

  1. 转到localhost:8080 / configure(Jenkins配置部分)

  2. 现在转到JDK部分并取消选中自动安装(如果您没有取消选中,那么只要它可用,它就会每次下载最新的java,并且可能导致构建失败)

    < / LI>
  3. 将JAVA_HOME放在JAVA_HOME部分的名称部分和jdk主路径中

  4. enter image description here

    1. 申请并保存
    2. 第2步: -

      1. 转到Jenkins并添加新项目,同时选择&#34; Free Style Project&#34;然后单击确定。

      2. 点击&#34;高级项目选项&#34;高级项目选项&#34;

      3. 现在检查选项: - &#34;使用自定义工作区&#34;并在目录部分

      4. 中指定项目绝对路径

        enter image description here

        1. 应用

        2. 现在去&#34;构建&#34;并选择&#34;执行Windows批处理命令&#34;

        3. 在命令列中输入批处理文件的文件名 enter image description here
        4. 申请并保存
        5. 现在转到Jenkins并选择你的Jenkins项目并点击Build:)

答案 1 :(得分:2)

我使用gradle从Jenkins运行我的testNG测试。 看看the gradle docs

我使用配置xml文件运行testNG测试。 看看the testNG docs

有很多要涵盖,所以我建议阅读这些来源,但我会从我的一个配置中提供一些相关的部分。

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运行时会让你发疯。

答案 2 :(得分:1)

如上所述,请使用以下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插件/任务来运行此脚本