@Transactional不会在JUnit测试中回滚

时间:2016-10-30 20:15:53

标签: java mysql spring hibernate junit

我在同一个测试类中有2个JUnit测试,每个测试都标记为@Transactional,第一个创建用户,第二个创建用户并检查我们是否可以获得这些用户。

问题是,当第二次测试运行时,第一次测试创建的用户仍然在数据库中。

@Test
@Transactional
public void testCreateUser() throws Exception

@Test
@Transactional
public void testGetUserById() throws Exception

您是否知道为什么@Transactional在同一个测试类中运行不正常?此外,数据在测试类结束时回滚。

我正在使用Spring启动+ Mysql + Hibernate。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情,并注意你的... context.xml的类路径。 如果您希望每个方法都是事务性的,或者高于您想要的每个方法,您也可以将@Transactional移到上面。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:/config/your-context.xml","classpath:/config/ehcache.xml"})
@Transactional
@WebAppConfiguration
public class IntegrationTests {

@Autowired
private ApplicationContext appContext;

@Autowired
public FileDao fileDao;

@Autowired
public SessionFactory sessionFactory;

@Test
public void test1() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException{
    ....
    ....
    ....
    }
}

答案 1 :(得分:0)

添加到配置类 @EnableTransactionManagement