9

実行に最も時間がかかるスイート内の junit テストを見つけるにはどうすればよいでしょうか? junitreport ant タスクのデフォルトの出力は役に立ちますが、私たちのスイートには何千ものテストが多数の小さなスイートに編成されているため、面倒であり、最悪の攻撃者は常に変化しています。

luntbuild を使用していますが、ant から実行できるものが理想的です。

4

3 に答える 3

11

JUnitReport は、JUnit タスクによって生成された xml ファイルで機能します。同じ xml ファイル (TEST-*.xml) からテスト期間を読み取るタスクを作成できます。ただし、ショートカットを使用して、JUnitReport によって作成された概要ファイル (TESTS-TestSuites.xml) を読み取ることもできます。このファイルには、すべての情報が 1 つのファイルに含まれています。

これを行う簡単な方法は、少しだけ xsl を使用して、最も遅いテストを表示することです。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:text>    </xsl:text>
    <xsl:for-each select="testsuites/testsuite">
    <xsl:sort select="@time" data-type="number" order="descending" />
      <xsl:value-of select="@name"/> : <xsl:value-of select="@time"/>
      <xsl:text>
  </xsl:text>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Ant から実行するには、次のようにします。

<target name="show.slow.tests">
    <xslt in="target/tests-results/TESTS-TestSuites.xml" out="target/slow.txt" style="slow.xsl"/>
</target>

次に、最初の X 行を調べるだけで、最も遅い X 個のテストを見つけることができます。

jfredrick$ head target/slow.txt

    ForcingBuildShouldNotLockProjectInQueuedStateTest : 11.581
    CruiseControlControllerTest : 7.335
    AntBuilderTest : 6.512
    Maven2BuilderTest : 4.412
    CompositeBuilderTest : 2.222
    ModificationSetTest : 2.05
    NantBuilderTest : 2.04
    CruiseControlConfigTest : 1.747
    ProjectTest :
    1.743 BuildLoop9MonitorTest 3 : 0.
于 2008-11-11T08:42:04.537 に答える
2

TeamCityを使用します。彼らは優れたレポートを持っており、バージョン 4.0 はテストを順序付けさえするので、最も不安定なテストが最初に実行されます。

于 2008-11-10T14:13:10.703 に答える
1

クルーズ コントロールを使用してビルド サーバーでテストを起動する場合、実行時間で並べ替える最上位オプションの 1 つです。

于 2008-11-10T14:19:33.903 に答える