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のテスト・メカニズムにステップ・バイ・ステップを繰り返す必要はありません。