2013-05-21 14 views
3

我所有的單元測試和春天有標註相同的標題:的JUnit exluding基類

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:spring/spring-master.xml"}) 
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) 
@Transactional() 

我把它們搬到了基類和我所有的測試,現在擴展它:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:spring/spring-master.xml"}) 
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false) 
@Transactional() 
public class DomainObjectBaseTest { 
... 
public class SomeTest extends DomainObjectBaseTest { 

現在,當我運行所有測試。我得到的DomainObjectBaseTest:

java.lang.Exception: No runnable methods 

我的問題是如何我可以避免它嗎?我可以刪除@RunWith,但在這種情況下,我必須將註釋應用於所有其他測試。太多額外的代碼,不喜歡它。

也許,作爲一種替代方法,我可以以某種方式在Spring組註釋中爲其命名,並從我的測試中引用該組,請告訴我是否可能。在這種情況下,我將完全刪除基類。

而且可能有一種方法可以說明不應該測試這個類。我正在使用JUnit4。

回答

8

使您的基類抽象。問題是,我相信它不是抽象的,所以測試運行器試圖運行它,並因此失敗(恕我直言,愚蠢)的原因。但它忽略了抽象類。

+1

+1。我使用JUnit&JMock時遇到了同樣的問題;這根本不是一個春天的問題。 – Jules

+0

感謝您的回覆! – Alexandr