2014-01-30 35 views
1

我們的項目中有彈簧服務。例如UserService。Junit忽略服務中的我的@Transactional註釋

這些服務使用@Transactional註釋。

我們只是試圖執行,涉及到這些服務,由於某種原因,@Transactional註釋被忽略JUnit測試。 (例如,我使用@Test而不使用@Transactional,它使用了一個確實是@Transactional被賦值的服務,在該服務中它保存了一個新的對象(實體),該實體在事務結束之前被保存在數據庫中(提交)。)

我想指出,我們不希望我們的JUnit測試與@Transactional自己進行註釋。

是否可以強制執行JUnit來不能忽視我們的服務@Transactional註解?

感謝,

+2

你如何感受一個事實,即它不是'@ Transactional'? –

+0

見我的編輯.... – Urbanleg

回答

0

你應該明確地告訴JUnit來使用事務(例如,從基準):

@ContextConfiguration(locations={"example/test-context.xml"}) 
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=false) 
public class CustomConfiguredTransactionalTests { 
    // class body... 
} 

然後你就可以以控制的行爲,請使用@非事務性/ @回滾/等註釋特定的方法。如前面提到的,需要

+0

這仍然不是SO可能是有益的工作對我來說 – Urbanleg

+0

這個答案在這裏:http://stackoverflow.com/a/11492402/1990089。 –

0

手動配置,因爲交易不是在Spring上下文測試持續。對於這個話題

Spring參考可以發現here