使用JUnit 4,我的ant構建腳本調用與任務的junit始終將測試類名稱報告爲「未知」。有沒有解決這個問題的方法,不涉及從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運行的結果。一切似乎都發現,除了測試的名稱總是「不知道」,例如:
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..
測試正常運行,我通常都能弄清楚從被記錄的堆棧跟蹤故障點,但一切都被報告爲「未知「只是令人煩惱和愚蠢。
在閱讀了幾篇SO帖子之後,我發現有兩種方法來設置測試,從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擴展了我的測試用例,這確實能夠正確報告名稱,但是這個單獨的更改摧毀了它的一些生命週期,並且測試以bizzarre方式失敗。我的理解是,當JUnit跑步者看到你的測試類是從TestCase派生出來的時候,它會將它作爲JUnit 3測試用例運行,因此會忽略所有的@Before,@After等註釋。我沒有看到重新進入JUnit 3測試機制的重點。