当前位置: 首页 > 知识库问答 >
问题:

@Transactional在JUnit测试中不回滚

钱睿范
2023-03-14

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

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

@Test
@Transactional
public void testCreateUser() throws Exception

@Test
@Transactional
public void testGetUserById() throws Exception

谢谢你抽出时间。

共有1个答案

施俊明
2023-03-14

尝试类似的方法,并注意您的...context.xml的类路径。如果希望每个方法都是事务性的,也可以将@transaction移到class之上,或者移到所需的每个方法之上。

@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{
    ....
    ....
    ....
    }
}
 类似资料:
  • 我正在使用Eclipse中的 JUnit5位于modul-path上,并且在module-info.Java中是必需的。 当我尝试运行代码时,总是会收到以下消息: 初始化引导层java.lang.module.findException时出错:无法为C:\users\tim hp.p2\pool\plugins\org.junit.jupiter.migrationsupport_5.0.0.v2

  • 所以我是JUnit的新手,我们必须用它来做家庭作业。我们的教授给了我们一个有一个测试类的项目。当我右键单击>Run as>JUnit Test,我会弹出一个错误,上面写着‘找不到JUnit tests’。我知道这里已经回答了这个问题(没有找到测试运行程序'JUnit4'的测试),但是关闭eclipse、重新启动、清理和构建似乎不起作用。下面是我的运行配置、构建路径和我试图测试的类的截图。

  • 我试图用内存中的H2 DB测试某些实体的持久性,但我认识到无论是在构建平台上运行还是在运行RunAs时,都不会按应有的方式被调用- 我可以肯定的是,序列是在H2 DB内部生成的。当我连接到这个生成的H2时,我甚至可以选择它们。所以这绝对不是H2内部的问题,而是Hibernate的问题。(通常Hibernate会在持久化需要ID的实体时自动分配ID)。 实体 引用实体中的引用。。。 持久性单位...

  • 我已经从https://howtodoinjava.com/spring-batch/java-config-multiple-steps/'复制了Spring批处理程序。 我从https://docs.spring.io/spring-batch/docs/current/reference/html/testing.html创建了以下JUnit测试用例: 我的Maven pom文件是: 谢谢

  • 我试着去模拟课堂,但我总是得到一个NPE。我见过当stubing方法时发布mockito-nullPointerException。在这篇文章中,他们这样解释: 我几乎可以肯定这也适用于我的问题。但我找不到解决办法。我已经试了10个小时了。 我还读了一些关于@autowired和@before的东西,显然@autowired是在@before之前创建的,这也可以解释我的NPE。 在@test vo

  • 我目前正在研究如何测试我的ElasticSearch类的覆盖率,它实现了ResHighLevel客户端。问题是它返回指向RestHighLevelClient.class.的空指针,我是ES的新手,我不知道我哪里出错了。 这是我的ElasticSearch类: 这是我的测试案例: 我的端口已在app.properties中设置为9200。 请在这方面给我一些帮助。我真的需要解决这个问题。任何帮助都