6

Ant を使用して RHEL6 マシンで Sonar Java コード分析を実行しています。統合テスト分析には、ソナー用の JaCoCo プラグインを使用しています。ライブラリのクラスパスにプラグインがあります。Selenium テストを実行すると、「jacoco.exec」ファイルが生成されます (10 回のテストで約 1MB)。次に、Sonar Ant ターゲットで Jacoco プラグインを有効にして、Sonar にインポートします。ソナー分析ログは、Jacoco ファイルが分析されたことを示しています (約 5000 ミリ秒かかりました)。ただし、My Sonar IT ウィジェットには 0% のコード カバレッジが表示されます。Cobertura を使用して、ユニット テストのコード カバレッジを取得することに成功しました。

私のテストターゲット:

<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
        <classpath path="${buildHome}/libs/jacocoant.jar"/>
    </taskdef>

    <jacoco:coverage xmlns:jacoco="antlib:org.jacoco.ant">
        <junit fork="yes" failureproperty="true" forkmode="once" maxmemory="1024m">
            <formatter type="xml" />
            <classpath refid="buildClasspath" />

            <test name="${testName}" todir="${testLogs}" if="testcase" />
            <batchtest haltonerror="false" todir="${testLogs}">
                <fileset dir="${SeleniumScripts">
                    <include name="**/*.java" />
                </fileset>
            </batchtest>
        </junit>
    </jacoco:coverage>

私のSonar Antターゲット:

...
<property name="sonar.sources" value="${srcCode" />

    <property name="sonar.tests" value="${testCode}" />

    <property name="sonar.binaries" value="${srcAndTestBinaries}" />

    <property name="sonar.dynamicAnalysis" value="reuseReports"/>
    <property name="sonar.surefire.reportsPath" value="${reportsPath}" />
    <property name="sonar.core.codeCoveragePlugin" value="jacoco" />
    <property name="sonar.jacoco.itReportPath" value="${jacocoCoveragePath}/jacoco.exec" />

    <!-- Add the Sonar task -->
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
        <classpath path="${antLibPath}/sonar-ant-task-1.4.jar" />
    </taskdef>

    <sonar:sonar key="projectKey" version="1.0" xmlns:sonar="antlib:org.sonar.ant"/>

「関連する」ものだけを含めようとしました。「jacoco:coverage」要素が Selenium テストに適しているかどうかはわかりませんが、実行ログでは「エージェント」について言及されているため、ここではエージェントが Java VM のプロキシとしても使用されていると想定しています。

私は立ち往生しています、助けてください:)

更新され たソナー出力の一部を次に示します。

[sonar:sonar] 08:36:15.619 INFO  p.PhasesTimeProfiler - Sensor JaCoCoItSensor...
[sonar:sonar] 08:36:15.623 INFO  o.s.p.j.JaCoCoPlugin - Analysing [file path omitted]\jacoco.exec
[sonar:sonar] 08:36:17.272 INFO  p.PhasesTimeProfiler - Sensor JaCoCoItSensor done:     1653 ms
4

2 に答える 2

0

私はそれを見落としているかもしれませんが、エージェントに結果を保存する場所をどこに伝えているのかわかりません。

私のantスクリプトでは、これを持っています:

 <jacoco:coverage enabled="${my.coverage.enabled}" destfile="${test.log.dir}/jacoco.exec">

junit タスクをラップします。定義destfile="${jacocoCoveragePath}/jacoco.exec"してみて、それが修正されるかどうかを確認してください。

于 2012-10-31T19:07:39.737 に答える
0

こんにちは、jacoco を使用して受け入れテスト用のコード カバレッジを生成する作業も行っています。単体テストには cobertura を使用しており、ソナー ダッシュボードでコード カバレッジと単体テスト レポートを確認できます。

受け入れテスト用のコード カバーを取得します。セレンを使用して受け入れテストを実行します。セレンを使用して実行される受け入れテストのコードカバレッジを jacoco がどのように生成するのか疑問に思っています。

私の推測では、jacocoant.jar の代わりに jacocoagent.jar のパスについて言及する必要があると思います。私も間違っているかもしれません。セレンで実行されるテストのコードカバレッジを生成する方法を見つけた場合、解決策を提供できますか

于 2013-12-10T19:50:20.380 に答える