2010-08-18 41 views
0

我想在我的應用程序服務中測試事務回滾。因此,我不想使用spring的AbstractTransactionalJUnit4SpringContextTests@Transactional註釋,因爲它將我的測試方法封裝在事務中。如何在沒有Spring事務測試支持的情況下編寫Junit4測試?

我知道春天還提供AbstractJUnit4SpringContextTests測試沒有交易。不過,我需要有一些事務將數據保存到我的數據庫中,並在運行被測服務後查詢斷言的數據。

如何在沒有默認事務測試管理的情況下編寫Junit 4 spring事務性測試?

回答

3

這裏默認TransactionalTestExecutionListener配置你的測試是在回答你的問題涉及這一點;

@ContextConfiguration(value = "/applicationContext.xml") 
public class JPASpringTest extends AbstractJUnit4SpringContextTests { 
@PersistenceContext(unitName="jpadenemelocal") 
EntityManager entityManager; 

@Autowired 
protected PlatformTransactionManager transactionManager; 

@Test 
public void testInsertRolManyToMany() { 
TransactionStatus status = transactionManager.getTransaction(null); 
// your code 

transactionManager.commit(status); 
} 

} 
1

彈簧文檔應在其testing chapter

什麼你可能想要的是沒有這樣的

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration 
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class}) 
public class SimpleTest { 

    @Test 
    public void testMethod() { 
     // execute test logic... 
    } 
} 
+0

Paul,我會使用EntityManager以編程方式創建事務,當我需要使用它們嗎? – JavaRocky 2010-09-07 01:40:53

+0

對不起,我完全沒有完全讀完你原來的問題。所以你實際上需要一個交易在測試中。在這種情況下,以編程方式創建它可能會工作,我認爲你需要JPATransactionManager。然後,也許你可以通過控制傳播行爲來做你需要做的事情。也許如果你能提供一個你需要做什麼的範例測試...... – Paul 2010-09-07 12:54:13

相關問題