我在同一个测试类中有2个JUnit测试,每个测试都标记为@Transactional,第一个创建用户,第二个创建用户并检查我们是否可以获得这些用户。
问题是,当第二次测试运行时,第一次测试创建的用户仍然在数据库中。
@Test
@Transactional
public void testCreateUser() throws Exception
@Test
@Transactional
public void testGetUserById() throws Exception
您是否知道为什么@Transactional在同一个测试类中运行不正常?此外,数据在测试类结束时回滚。
我正在使用Spring启动+ Mysql + Hibernate。
感谢您的时间。
答案 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