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

如何在服务层为@transactional时回滚单元测试

罗甫
2023-03-14

我使用的是Spring Boot 1.5.2.Release,我的服务类注释为

@Service
@Transactional(rollbackFor = Exception.class)

我的单元测试类注释为:

@RunWith(SpringRunner.class)
@SpringBootTest

共有1个答案

贺景山
2023-03-14

在测试类上使用@transactional的解决方案是执行此操作的标准方法。Spring Tx不可能突然回滚事务,所以我建议您更仔细地研究遇到的问题,而不是发明其他解决方案

 类似资料:
  • 我已经开始考虑在我的项目中围绕一些业务逻辑添加一些单元测试。 我想测试的第一个方法是服务层中的一个方法,它返回给定节点的子节点列表。 该方法如下所示: 我想象这样的测试方法是提供一个假树结构,然后测试提供节点是否返回正确的子节点。 ssdsContext是一个对象上下文。 我已经看到可以为提取和接口如何模拟ObjectContext或ObjectQuery 我还读到,as Entity Frame

  • 在我的项目中,我在进行单元测试时遇到了问题。一个问题是,仅仅进行联调就可以更快地编写,并且还可以测试组件是否真正协同工作。单元测试新颖的“算法”之类的似乎要容易得多。单元测试服务类感觉是错误和无用的。 我使用mockito来模拟spring数据存储库(以及DB访问)。问题是,如果我告诉模拟存储库在方法调用getById时返回实体A,它显然会返回实体A,服务也会返回实体A。是的,该服务做了一些额外的

  • 我在同一个测试类中有两个JUnit测试,每个都标记为@Transactional,第一个创建用户,第二个创建用户,并检查我们是否可以获得这些用户。 问题是,当第二个测试运行时,第一个测试创建的用户仍然在数据库中。 谢谢你抽出时间。

  • 我的Spring应用程序分层为Bean、Service和dao。所有的@Transactional注释都在服务层中。 这是一个特定场景中的伪代码。 userBean.java UserDAOImpl.java 在我的save user测试用例中,update parent user操作在某些情况下可能会由于主键冲突而失败,这是意料之中的。 由于@Transactional注释是在service类中

  • 问题内容: 我已成功将此注释用于Dao类。回滚适用于测试。 但是现在我需要回滚真实代码,而不仅仅是测试。有用于测试的特殊注释。但是哪些注释适用于非测试代码?对我来说这是一个大问题。我已经花了一天的时间。官方文档不符合我的需求。 employeeDao is 这是一个注释可以很好地运行的测试: HibernateDaoBeans.xml 是的,我回滚了交易。我刚刚为服务添加了BEAN …,然后注释@

  • 我有一个类,它有一个标记为@Transactional的方法。从该方法中,会调用多个标记为@Transactional的方法。所以,从层次上讲,这就像有一个父事务和多个子事务。当我调用从数据库获取数据的方法,然后最终调用一个应该将数据存储在数据库中的方法时,就会出现问题,然后事务提交失败,并用“