web-dev-qa-db-ja.com

JenkinsでTestNGテストを実行する方法

Jenkinsから(含まれているJavaプロジェクト)で)TestNGテストを実行しようとしていますが、うまくいきません。

JenkinsのTestNGプラグイン( https://wiki.jenkins-ci.org/display/JENKINS/testng-plugin )はTestNGテストの結果を公開するだけであるように見えますが、実際には公開していませんテストクラスを実行する...または私は間違っていますか?

いずれにせよ、Jenkinsを使用してTestNGプロジェクトでTestNGテストを実際に実行するにはどうすればよいですか、それとも可能ですか?たとえば、コマンドラインステートメントまたはバッチファイル(Windows Server 2008)を使用する必要がありますか?

どんな助けも大歓迎です。

PSJenkinsでビルド後のコマンドラインを入力してプロジェクトでTestNGテストを実行しようとしましたが、TestNGのクラスパスが見つからないために苦労しました。コマンドラインからTestNGを実行することについての以前の質問を投稿しましたが、機能しませんでしたので、そのルートをあきらめました。

コマンドラインからTestNGを実行する方法

9
Fuzzy Analysis

上記のコメントのとおり、次の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
Patton

このタスクを完了するには、2つのステップがあります。

ステップ1:-

  1. Localhost:8080/configure(Jenkins configureセクション)に移動します

  2. JDKセクションに移動し、自動的にインストールをオフにします(オフにしないと、最新のJavaが利用可能になるたびにダウンロードされ、ビルドが失敗する可能性があります)。

  3. 名前セクションにJava_HOMEを置き、Java_HOMEセクションにjdkホームパスを置く

enter image description here

  1. 適用して保存

ステップ2:-

  1. Jenkinsに移動して新しいアイテムを追加し、「Free Style Project」も選択して[OK]をクリックします。

  2. 「詳細プロジェクトオプション」の「詳細」をクリックします。

  3. ここでオプションを確認してください:-「カスタムワークスペースを使用」し、ディレクトリセクションでプロジェクトの絶対パスを指定します

enter image description here

  1. 申し込む

  2. 「ビルド」に行き、「Windowsバッチコマンドを実行する」を選択します

  3. ここのコマンド列に、バッチファイルのファイル名を指定してください enter image description here
  4. 適用して保存

次に、Jenkinsに移動してJenkinsプロジェクトを選択し、[ビルド]をクリックします:)

7
Shubham Jain

私はGradleを使用してJenkinsからtestNGテストを実行しています。 gradle docs を見てください。

構成xmlファイルを使用してtestNGテストを実行します。 testNG docs を見てください。

カバーすることがたくさんあるので、これらのソースを読むことをお勧めしますが、私の構成の1つからいくつかの関連する部分を提供します。

私の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-smoketest.xml」で参照されているtestNG 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からは、「シェルの実行」ビルドステップでgradleタスクを実行するため、便宜上、gradleラッパーを使用しています。

./gradlew clean Smoke_Test

正しいディレクトリにいることを確認します。「Smoke_Test」は、build.gradleで指定された名前です。

結果を保存するためにtestNG Jenkinsプラグインを使用できます。

また、HTMLパブリッシャープラグインを使用してJenkinsで表示および保存できるテストレポートのすてきなフォーマットに reportng を使用することをお勧めします。

最初にこれをローカルマシンのCLIから実行してみてください。Jenkinsから実行しているときにデバッグしようとすると、気が狂います。

2
dassimon