Java @事务在JUnit测试中不回滚

Java @事务在JUnit测试中不回滚,java,mysql,spring,hibernate,junit,Java,Mysql,Spring,Hibernate,Junit,我在同一个测试类中有两个JUnit测试,每个测试都标记为@Transactional,第一个测试创建用户,第二个测试创建用户,并检查是否可以获得这些用户 问题是,当第二个测试运行时,第一个测试创建的用户仍在数据库中 @Test @Transactional public void testCreateUser() throws Exception @Test @Transactional public void testGetUserById() throws Exception 你知道为什

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

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

@Test
@Transactional
public void testCreateUser() throws Exception

@Test
@Transactional
public void testGetUserById() throws Exception
你知道为什么@Transactional在同一个测试类中工作不好吗?此外,数据在测试类结束时回滚

我正在使用SpringBoot+Mysql+Hibernate


谢谢您的时间。

尝试类似的方法,并注意您的…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{
    ....
    ....
    ....
    }
}

添加到配置类@EnableTransactionManagement

您是在执行单元测试还是集成测试?您定义了transactionManager()我试着这样做,但我遇到了一些错误,比如
无法打开ServletContext资源[/application.properties]
@事务性就是为了这个目的而做的,为什么它不工作?也许它对Spring MVC有效,我试着使用application.properties作为ContextConfiguration,但它不工作。你使用Spring boot,我没有看到,对不起。这在SpringMVC中起作用。