10

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

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

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

非常感谢任何帮助。

注意我尝试在 Jenkins 中输入一个构建后的命令行来让项目运行 TestNG 测试,但是在找不到 TestNG 的类路径时遇到了困难。我之前发布了一个关于从命令行运行 TestNG 的问题,但我无法正常工作,所以我放弃了这条路线:

如何从命令行运行 TestNG

4

3 回答 3

10

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

步骤1:-

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

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

  3. 将 JAVA_HOME 放在名称部分,将 jdk 主路径放在 JAVA_HOME 部分

在此处输入图像描述

  1. 应用并保存

第2步:-

  1. 转到 Jenkins 并添加新项目,同时选择“Free Style Project”并单击“确定”。

  2. 点击“高级项目选项”中的“高级”

  3. 现在检查选项:-“使用自定义工作区”并在目录部分指定您的项目绝对路径

在此处输入图像描述

  1. 申请

  2. 现在去“构建”并选择“执行windows批处理命令”

  3. 在命令列中给出批处理文件的文件名 在此处输入图像描述
  4. 应用并保存

现在转到 Jenkins 并选择您的 Jenkins 项目并单击 Build :)

于 2015-07-30T06:28:51.890 回答
2

我使用 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 运行时进行调试会让你发疯。

于 2016-06-02T11:00:53.307 回答
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 插件/任务来运行这个脚本

于 2013-05-30T05:44:45.130 回答