2012-04-19 9 views
4

JUnit 4を使用して、junitを呼び出すAntビルドスクリプトは、常にテストクラス名を「不明」と報告します。これを修正する方法はありますか?それはTestCaseから派生することはありませんか?JUnit 4 @Test注釈でテスト名が「不明」と報告される

私は@Testアノテーションを持つ私のテスト方法、例えば宣言:

SomeTest.java:

public class SomeTest { 
    @Test 
    public void doSomething() { .. } 
} 

とテストスイートで一緒にそれらを収集:

AllTests.java:

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    SomeTest.class 
}) 
public class AllTests { 
} 

次に、NetBeans経由でAntタスクを起動します。 JUnitの実行結果を出力するためのort。すべては例えば、テストの名前は、常に「不明」です除き見つけるようだ:

6 tests passed, 2 tests failed, 2 tests caused an error (8.4s) 
com.mystuff.AllTests FAILED 
    Unknown passed (0.0s) 
    Unknown passed (0.0s) 
    Unknown passed (0.0s) 
    Unknown passed (0.0s) 
    Unknown passed (0.0s) 
    Unknown passed (0.0s) 
    Unknown FAILED (0.0s) 
    Unknown caused an ERROR: at org.hibernate.somethingorother.java:1234 (0.0s) 
    ..etc.. 

テストが正常に動作し、私は通常、ログインのスタックトレースから障害点を把握することができますが、すべてが」と報告されています「不明」は単に迷惑で鈍いです。

いくつかの記事を読んで、テストを設定する2つの方法、TestCaseから派生した古いJUnit 3の方法、@Testアノテーションを使用する新しいJunit 4の方法があることを発見しました。

Not able to execute tests with @Test annotation when my test extends TestCase(Junit) in Eclipse

JUnit confusion: use 'extends TestCase' or '@Test'?

そして、このポストは、「テストクラスは、もは​​や共通のフレームワークのクラスを拡張していないのJUnit 4で。何も継承されたメソッドのgetNameはありませんので、任意のより多くの」言及 How to obtain test case name in JUnit 4 at runtime?

私が試しましたTestCaseから私のテストケースを拡張して、名前が正しく報告されるようにしましたが、この単一の変更はライフサイクルの一部を崩し、テストは奇妙な方法で失敗しました。私の理解は、JUnitランナーがあなたのテストクラスがTestCaseから派生していると見て、JUnit 3のテストケースとして実行するので、すべての@Before、@Afterなどのアノテーションを無視するということです。私は、JUnit 3のテスト・メカニズムにステップ・バイ・ステップを繰り返す必要はありません。

答えて

7

これは恥ずかしいですが、それは言われる価値があります。私は自分の質問にちょうど答えたと思う。

答えはタスクの1属性、enableTestListenerEventsのようですが、ここで説明:http://ant.apache.org/manual/Tasks/junit.html

をドキュメントはAntの1.8.2以降」と言うので、私はそれを無視していた - Antの1.7.0を1.8.1にとして動作この属性がデフォルトでtrueの場合。私は1.8.2を実行していますが、誤解していました。実際には、1.8.2ではデフォルトではオフになっています。

ので修正はbuild.xmlの中で私のタスクを変更することです:

<junit haltonfailure="true" printsummary="on" fork="yes" dir="."> 

<junit haltonfailure="true" printsummary="on" fork="yes" dir="." 
    enableTestListenerEvents="true"> 

へのNetBeansを今含め、テスト結果ペインにアップ・ツー・モーメントの情報を出力しますテストが進行するにつれてテスト名が表示されます。フィードバックの全体的な経験ははるかに豊かです。あなたのお友達に教えてください:)

関連する問題