Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Jenkins上运行TestNG测试_Java_Jenkins_Testng_Jenkins Plugins - Fatal编程技术网

Java 如何在Jenkins上运行TestNG测试

Java 如何在Jenkins上运行TestNG测试,java,jenkins,testng,jenkins-plugins,Java,Jenkins,Testng,Jenkins Plugins,我正试图从Jenkins那里运行TestNG测试(在一个包含Java的项目中),但运气不好 Jenkins()的TestNG插件似乎只发布TestNG测试的结果,但实际上并不运行测试类。。。还是我错了 在任何情况下,我如何在与Jenkins的TestNG项目中实际运行TestNG测试,或者这是可能的?例如,我是否必须使用命令行语句或批处理文件(在Windows Server 2008上) 非常感谢您的帮助 p.S.我尝试在Jenkins中输入一个构建后命令行,以便项目运行TestNG测试,但由于

我正试图从Jenkins那里运行TestNG测试(在一个包含Java的项目中),但运气不好

Jenkins()的TestNG插件似乎只发布TestNG测试的结果,但实际上并不运行测试类。。。还是我错了

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

非常感谢您的帮助

p.S.我尝试在Jenkins中输入一个构建后命令行,以便项目运行TestNG测试,但由于找不到TestNG的类路径,因此遇到了困难。我之前发布了一个关于从命令行运行TestNG的问题,但我无法解决这个问题,因此我放弃了这条路线:


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

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

步骤1:-

  • 转到localhost:8080/配置(Jenkins配置部分)

  • 现在转到JDK部分,并取消选中InstallAutomatically(如果您没有取消选中,那么每次有最新的java可用时,它都会下载,并且可能导致构建失败)

  • 将JAVA_HOME放在name部分,将jdk HOME路径放在JAVA_HOME部分

  • 应用并保存
  • 步骤2:-

  • 转到Jenkins并添加新项目,同时选择“Free Style Project”并单击Ok

  • 单击“高级项目选项”中的“高级”

  • 现在选中选项:-“使用自定义工作区”,并在目录部分指定项目的绝对路径

  • 申请

  • 现在转到“构建”并选择“执行windows批处理命令”

  • 在命令列中,给出批处理文件的文件名
  • 应用并保存

  • 现在转到Jenkins并选择您的Jenkins项目,然后单击Build:)我使用gradle从Jenkins运行testNG测试。 看一看

    我使用配置xml文件运行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
    }
    
    确保您位于正确的目录中,“Smoke_Test”是build.gradle中指定的名称

    您可以使用testNG Jenkins插件保存结果

    我还建议您使用HTML Publisher插件在Jenkins中显示和保存测试报告的格式


    首先尝试从本地计算机上的CLI运行该插件,在从Jenkins运行时尝试调试会让您发疯。

    您对该插件的看法是正确的。您的java项目是如何构建的?ant、maven、自定义脚本?测试通常作为构建阶段运行。Jenkins的构建步骤是什么?它不是用ant、maven或脚本构建的,不是吗是JBoss Developer Studio的一个TestNG项目。因此,我可以从自己的机器上运行测试,但我想通过Jenkins以某种方式运行相同的类。我知道有一种方法可以将TestNG测试作为Ant任务来运行,但我会遇到类路径异常,并且通常对如何执行感到困惑。那么,就是Ant,JBDS提供了classp在运行测试时设置ath,您也应该这样做,或者在ant脚本中定义一个类路径,或者(更好地)将其作为选项传递。-Dtestng.test.classpath=“c:/build;c:/java/classes;“当你能用ant命令运行你的测试时,把它输入jenkins。@FuzzyanAnalysis我从来没有用过jenkins,但因为它是Hudson的克隆,我相信有一种方法可以让你运行shell/batch/ant脚本。因此,作为这个过程的第一步,请定义类路径,也就是说,把你所有的类文件和必要的JAR放在e类路径并从那里运行testNG测试。@FuzzyanAnalysis:我也处于类似的情况,我能够执行我的testNG测试,但不确定如何将测试失败报告给jenkins,如果您可以这样做,请让我知道,任何帮助都将不胜感激。谢谢,我终于让您的脚本工作了,并附加了一个声明,告诉ant th用于testNG的e类路径。干杯。请您提供完整的步骤,以便与Jenkins集成/运行testNG测试用例。谢谢!谢谢Shubham!我只希望我能在两年前阅读您的答案。我会记下您的说明,以备将来参考(我相信其他人会发现你的答案很有用,因为这个问题得到了很多意见。)为我的荣幸@fuzzyananalysis干杯。谢谢你友好的话语:)@ShubhamJain:我也遇到了类似的情况,我可以用一个调用ant来触发测试的shell脚本来运行testNG测试。现在我的问题是——如何将测试失败报告给Jenkins,以便Jenkins标记整个构建失败,我需要为此做些什么。感谢任何帮助。
    <?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>    
    
    ./gradlew clean Smoke_Test