spring4 + junit4 事物無法回滾

在使用junit 4 測試spring4代碼時, 事物始終無法回滾, 即使已經在方法中增加了@Transactiona 和 @Rollback(true)標籤, 但是每次執行後數據還是插入到數據庫中.


異常代碼:

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
({"classpath*:applicationContext*.xml"}) 
public class SysUserServiceTest extends AbstractJUnit4SpringContextTests {

    @Autowired
    private SysUserService sysUserService;
    @Test
    @Transactional
    @Rollback(true)
    public void testInsert() {
        SysUser user = new SysUser();
        user.setUserId(11);
        user.setName("dan");
        sysUserService.insert(user);
    }

}

 

分析:

測試代碼繼承了AbstractJUnit4SpringContextTests , 在AbstractJUnit4SpringContextTests 中已經存在事務,並且默認事務是自動提交,它覆蓋了後來在方法中配置的事務, 另外就是在測試類已經使用了@RunWith, 所以測試類無需再繼承AbstractJUnit4SpringContextTests

 

解決:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
({"classpath*:applicationContext*.xml"}) 
public class SysUserServiceTest {

    @Autowired
    private SysUserService sysUserService;
    
    

    @Test
    @Transactional
    @Rollback(true)
    public void testInsert() {
        SysUser user = new SysUser();
        user.setUserId(19);
        user.setName("dan");
        sysUserService.insert(user);
    }

}

 

我的博客: www.itart.top

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章