我們有基於Spring 2.0.8的AbstractTransactionalDataSourceSpringContextTests構建的測試類。這裏有很多這些,都是用JUnit3風格編寫的。如何在Ant中使用JUnit3測試類運行自定義JUnit4 Runner?
爲了使用JUnit 4過濾,我們炮製了一個替代JUnit38Runner,它允許我們將這些測試匹配到特定的應用程序環境,並相應地將其過濾掉。
通過在我們的自定義JUnit38Runner上使用@RunWith註釋,整個測試套件可以在Ant之外正常運行。
但是,當我們嘗試在Ant中運行時,它強制單個測試運行爲junit.framework.TestSuite或包裝在JUnit4TestAdapter中,兩者均忽略JUnit4下的@RunWith註釋。更糟糕的是,我們現有的套件被Ant直接調用了suite()方法,而不是委託給JUnit。
我試圖從Ant JUnitTestRunner中進行擴展,並簡單地重寫run()方法,但該類根本不是爲了擴展而編寫的。
除了複製整個JUnitTestRunner並對其進行破解(這會讓我們意識到脆弱的代碼問題),有沒有人有解決此問題的其他方法的運氣?
這裏好像有幾種代碼味道。我知道這可能不是你正在尋找的答案,但它可能是重構你的測試用例的時候了。 – bakoyaro 2011-08-04 15:56:20
重構不會解決Ant的問題(在Junit 3中包裝JUnit 4測試)。有了很多解決方法,它就一直在磕磕絆絆,但我認爲我必須咬牙切齒,寫出一個JUnit4 Ant任務。 – Matt 2011-08-25 04:47:57
也許在[升級到JUnit4並通過將它們一起運行來保留傳統JUnit 3測試和測試套件] [1]中有答案? [1]:HTTP://stackoverflow.com/questions/1861875/upgrading-to-junit4-and-keeping-legacy-junit-3-tests-and-test-suites-by-running – 2011-12-03 21:19:53