9

問題

junit 形式のレポートが Jenkins によって取得されないため、プロジェクトのステータス画面にレポートが表示されません。

詳細

junit 形式のレポート データは、Karma-runner (以前の Testacular) と呼ばれるテスト フレームワークによって生成されます。無視されるファイルは/target/surefire-reports、確実に生成されたレポートが作成される場所と同じ場所に作成されます。レポート データは、その親要素が--<testsuites>ではなく、確実に生成されたレポートがレポート ファイルの親要素として持つものであることを除いて、maven Surefire プラグインによって生成されたものと実質的に同じに見えます。という名前の、カルマによって生成された junit 形式のレポートのスニペットを次に示します。<testsuite><testsuite>TEST-karma.resultsTest.xml

Junit 形式の Karma 生成レポート ファイル、TEST-karma.resultsTest.xml

<?xml version="1.0"?>
<testsuites>
  <testsuite name="PhantomJS 1.9 (Mac)" package="karma.tests" timestamp="2013-04-10T13:32:26" id="0" hostname="jgmbp.local" tests="16" errors="0" failures="0" time="0.069">
    <properties>
      <property name="browser.fullName" value="Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.0 Safari/534.34"/>
    </properties>
    <testcase name="successfully cancels a new member" time="0.006" classname="karma.tests PhantomJS 1.9 (Mac).Household Controller"/>
    <testcase name="should parse an existing re-eval create date, setting the data in scope" time="0.003" classname="karma.tests PhantomJS 1.9 (Mac).Re-Eval Controller"/>
    <system-out><![CDATA[
]]></system-out>
    <system-err/>
  </testsuite>
</testsuites>

Karma テストは、Maven ビルドのテスト段階で実行されます。この 1 つの junit-report ファイルのみを生成するプロジェクトを作成し、すべての junit テストとカルマ テストがレポート ファイルを生成するようにビルドを実行しようとしました。Jenkins は常に確実なテストを取得しますが、カルマ テストは取得しません。

ご意見ありがとうございます。

4

6 に答える 6

3

amey と Wouter の意見のおかげで、ついにそれを理解する時間ができました。

重要なのは、私が Maven プロジェクトを構築していることです。これは、カルマ テストの表示では機能しません。カルマの結果を表示する唯一の方法は、Junit テストのビルド後のレポートを追加することです。何らかの理由で、maven ベースのジョブでは、junit レポートを追加するオプションが提供されません。

解決策は、maven job の代わりに自由形式のジョブを作成することです。自由形式のジョブを構成して、Maven プロジェクトを適切にビルドできます。上記の amey の投稿ごとに publish junit タスクを追加する限り、すべて問題ありません。

于 2013-07-15T16:34:52.623 に答える
2

この質問はかなり古いですが:

Jenkins の Maven プロジェクトでも機能するソリューションがあります。問題は、テストを記録する Jenkins レコーダーが Surefire:test ゴールの直後に実行されることです。したがって、テストを取得するには、karma を実行するために使用するプラグインをフェーズの前にtest実行する必要があります (フェーズ内などprocess-test-classes) (既存のプラグインの前に同じフェーズに何かを置くことはできないため)。

于 2015-03-24T18:03:59.157 に答える
1

1) Jenkins が Junit レポートを見つける必要があるレポートへのパスを入力しましたか? これは、ビルド後のアクション - JUnit テスト結果レポートの発行で実行できます。

2) または、 Performance Pluginを使用して Junit の結果を渡すこともできます。これもビルド後のアクションです。その Jenkins ジョブの構成でそのプラグインを選択します。

新しいレポート - Junit を追加し、レポートへのパスを入力しますtarget/surefire-reports/*.xml(注 - パスは現在のワークスペースを基準にしているため、最初のスラッシュを削除しました)。

于 2013-04-10T15:41:33.633 に答える
1

私は同じ問題を抱えていました。テスト結果が単一の<testsuites/>タグにラップされているという事実は問題ではありません。Jenkins の Maven プロジェクト プラグインが問題です。ビルドの構成が簡単になるため、典型的な Maven プロジェクトはこれを使用します。maven-exec-plugin次のようなものを使用して、すべてを一度にビルドできるように pom.xml に Karma を埋め込みました。

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <id>jsunit</id>
                    <phase>test</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <successCodes>
                    <successCode>0</successCode>
                    <successCode>1</successCode><!-- on failing test, don't get a build error -->
                </successCodes>
                <executable>${basedir}/src/test/javascript/test.bat</executable>
                <workingDirectory>${basedir}/src/test/javascript</workingDirectory>
            </configuration>
        </plugin>

maven jenkins プラグインは、生成された XML の取得を実際に拒否します。ただし、プラグインを使用して maven2 固有のジョブではなく「基本的な」jenkins ジョブを構成すると、機能します。後工程「JUNIT レポートを発行する」を追加して、 を使用しますtarget/surefire-reports/*.xml。通常のビルド ステップとして、「Maven タスクの実行」ステップを追加できます。

mvn testXML を使用したローカル ビルドは XML を無視しているように見えるため、まだ完全ではありません(maven-surefire-plugin単に XML を生成し、JUnit テストが失敗した場合はビルドを停止します)。の成功コードを使用して JavaScript テストが失敗した場合、ビルドを停止できますexec-maven-pluginが、エラー メッセージはまだ明確ではありません...

于 2013-05-15T09:41:26.350 に答える
0

私はこのゲームに遅れていますが、同じ問題があり、この1年前の投稿に出くわしました.

とにかく、私の意見では、を活用することでよりエレガントなソリューションを見つけましたmaven-karma-plugin。これにより、Jenkins でFreestyle Projectジョブに切り替える代わりに、Maven Projectジョブを引き続き使用できます。

詳細なソリューションはhttp://myshittycode.com/2014/10/23/jenkins-getting-karma-generated-test-results-to-appear-in-maven-project-job/に投稿されています。この同じ問題。

ありがとう。

于 2014-10-27T19:34:21.283 に答える