web-dev-qa-db-ja.com

JavaDocによるJUnitテストレポートの強化

顧客にとっては、統合テストの詳細なテストレポートを生成する必要があります。これは、すべてがグリーンであることを示すだけでなく、テストが行​​ったことも示します。私の同僚と私は怠け者であり、スプレッドシートやテキストドキュメントをハッキングしたくありません。

そのために、@ Testアノテーションが付けられた各メソッドと各テストクラスのJavaDocコメントを使用して、より複雑な統合テストを文書化する方法について考えます。テスト担当者にとっては、Jiraチケットなどのテストがどの要件にリンクされているか、およびテストが実際に何を実行しようとしているのかを確認するのに役立ちます。この情報もお客様に提供したいと考えています。

ここでの大きな問題は、各メソッドと各テストクラスのJavaDocをJUnitレポートにどのように配置できるかということです。 JUnit 4.9とMavenを使用します。

確かに、各assertXXX()には説明がありますが、結果としてニースのHTMLリスト、またはすべてのクラスとそのドキュメントを含むPDFドキュメントが必要で、その下にすべての@テスト方法とその説明、テスト時間、結果、失敗した場合はその理由。

または、派手なテストスクリプトを生成する別の方法はありますか? (または、これでオープンソースプロジェクトを開始する必要があります!?;-))

更新:EclipseにRunListenerを追加して、Eclipseで起動したときにEclipseでもレポートを作成する方法について、別の質問をしました。カスタムTestRunnerで提案されたソリューションは、テスト結果レポートを作成するもう1つの可能性です。ご覧ください: EclipseでJUnit RunListenerを使用するにはどうすればよいですか?

36

これを実現する1つの方法は、カスタム RunListener を使用することですが、javadocではなくアノテーションを使用する方が簡単です。次のようなカスタムアノテーションが必要になります。

@TestDoc(text="tests for XXX-342, fixes customer issue blahblah")
@Test
public void testForReallyBigThings() {
    // stuff
}

RunListenerは、テスト開始、テスト終了、テスト失敗、テスト成功などのテストイベントをリッスンします。

public class RunListener {
    public void testRunStarted(Description description) throws Exception {}
    public void testRunFinished(Result result) throws Exception {}
    public void testStarted(Description description) throws Exception {}
    public void testFinished(Description description) throws Exception {}
    public void testFailure(Failure failure) throws Exception {}
    public void testAssumptionFailure(Failure failure) {}
    public void testIgnored(Description description) throws Exception {}
}

Description には、テストメソッドに適用された注釈のリストが含まれているため、上記の例を使用すると、次を使用して注釈TestDocを取得できます。

description.getAnnotation(TestDoc.class);

通常どおりテキストを抽出します。

次に、RunListenerを使用して、このテストに固有のテキスト、テストが成功したか失敗したか、無視されたか、所要時間など、必要なファイルを生成できます。これはカスタムレポートになります。

次に、確実に、次を使用してカスタムリスナーを指定できます。

<plugin>
  <groupId>org.Apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.10</version>
  <configuration>
    <properties>
      <property>
        <name>listener</name>
        <value>com.mycompany.MyResultListener,com.mycompany.MyResultListener2</value>
      </property>
  </configuration>
</plugin>

これは Maven Surefireプラグイン、JUnitの使用、カスタムリスナーとレポーターの使用によるものです

このソリューションには、キャリッジリターンとフォーマットに関する限りjavadocの柔軟性がないという欠点がありますが、ドキュメントが1つの特定の場所(注釈TestDoc)にあるという利点があります。

22
Matthew Farwell

Maven Sure-fireのレポートを見ましたか?

JUnitテストからHTMLレポートを生成できます。

http://maven.Apache.org/plugins/maven-surefire-report-plugin/

それがどれほどカスタマイズ可能かはわかりません。しかし、それは良い出発点です。

TestNG(JUnitの代替)にレポート生成機能があることも知っています。 http://testng.org/doc/documentation-main.html#logging-junitreports

Log4jもお勧めします http://logging.Apache.org/log4j/1.2/manual.html

5
Patrick Magee

jt-report を使用して、テストレポートの優れたフレームワークを使用できます。

2
lols

TestNGとiTextを使用して、テスト結果をNice pdfレポートに出力するプログラムを作成しました。 @Testタグにテストの説明を入れることができ、それは.pdfレポートにも含めることができます。テストの実行時間とスイート全体を提供します。現在、Seleniumを使用したWebアプリケーションのテストに使用されていますが、その部分は無視できます。また、1回の実行で複数のテストスイートを実行することもできます。テストが失敗した場合は、スイート全体を再実行せずに、それらのテストのみを再実行できます。これらの結果は、元の結果PDFに追加されます。興味がある場合は、ソースへのリンクについて画像の下を参照してください。オープンソースプロジェクトになるのは良いスタートなので、これがオープンソースプロジェクトになってもかまいませんが、どうすればよいかわかりません。これがスクリーンショットです enter image description here

それで、sourceforgeでプロジェクトを作成する方法を見つけました。これがリンクです sourceforge link

1
Reid Mac

おそらく、「実行可能仕様」/ FIT/FitNesse、Concordion、Cucumber、JBehaveなどのBDDツールを一見する価値があるでしょう。

これにより、顧客の要求を正式に満たすだけでなく、透明性を新たなレベルに引き上げることができます。

簡単に言えば、これらのすべてのツールを使用すると、自然言語またはテーブルを使用してシナリオを定義し、自然言語構造の実際のコードへのバインディングを定義し、これらのシナリオを実行して、成功するか失敗するかを確認できます。実際には、すでに期待どおりに機能しているものと機能していないものを示す「ライブ」仕様があります。

これらのツールについてのよい議論を見てください: JavaのBDDフレームワークの違いは何ですか?

0
Alexey Tigarev

上記のように、mavenは間違いなく進むべき道です。 m2Eclipseプラグインを使用すると、非常に簡単にMavenプロジェクトを作成できます。それが終わったら。次のコマンドを実行するだけです。

cd <project_dir_where_you_have_pom_file>
mvn site:site

このコマンドは、スタイルシートを作成します。同じディレクトリで次を実行:

mvn surefire-report:report

これにより、テストケースが実行され、出力がhtmlに変換されます。 「target/site/surefire-report.html」で出力を見つけることができます。

以下はスニペットです。ご覧のとおり、すべてのテストケース(JUnitで記述)がhtmlに表示されています。実行されたテストケースの総数、成功した回数、所要時間などの他のメタ情報もそこにあります。

画像をアップロードできないため、出力を表示できません。

あなたはさらに一歩進んで、使用するプラグインの正確なバージョンを与えることができます

mvn org.Apache.maven.plugins:maven-site-plugin:3.0:site org.Apache.maven.plugins:maven-surefire-report-plugin:2.10:report
0
havexz