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

使用@Transactional David进行Spring Boot测试?

张星洲
2023-03-14

我正在用Hibernate为我们的Spring Boot REST API创建单元测试。我只是想知道当我使用@transactional时是否有问题。如果我用@Transactional注释测试,数据将永远不会真正进入数据库,并且会绕过潜在的错误源,我是否认为这是正确的?因为某些错误只发生在提交期间?还是我看错了?

在@test之后回滚事务-以下问题与我的问题不完全一致。因为我想知道如何触发提交并仍然执行回滚。使用EntityManager.flush()可以实现的功能。我知道如何在每次测试后重置数据库。

共有1个答案

姬翰林
2023-03-14

如果在测试配置中启用了事务管理,那么对于spring中测试方法执行结束时的commit,@commit,当然对于结束时的rollback,@rollback。对于手动事务控制,我使用TestTransaction.start()TestTransaction.end(),特别是对于某些删除和更新方法,以确保和检查操作的结果。(TestTransaction需要@commit对方法进行annatation或手动设置TestTransaction.flagforcommit())

 类似资料:
  • 我想测试我的SpringBoot应用程序,它使用cassandra作为CrudRepository。我最终得到了 具有 和 这就导致了 如果我使用旧版本的cassandra-unit-Spring 它以NullPointerException结束,因为没有注入值repo。 来源https://github.com/StephanPraetsch/spring.boot.cassandra.unit

  • 我正在springboot应用程序中编写Junits,它只有一个初始化器类 以及其他控制器和服务类。 服务类的Junit如下所示: 当我运行Junit时,它会抛出如下错误: 我还尝试了所有注释,如,@ContextConfiguration(classes=Initializer.class),,但它仍会抛出相同的错误。代码中没有其他类似于应用程序上下文的配置类。

  • 我正在用Cucumber编写验收测试,我想使用H2数据库进行测试。 应用程序测试属性如下所示: 在目录resources/db/migration中,我有一个包含这些脚本的sql文件: 但是当我运行测试时,H2用默认格式创建模式,而不是使用脚本: 如您所见,所有VARCHAR都是使用255大小创建的,而不是真实值。 你能帮我把飞行道和H2整合起来吗? 谢谢!

  • 我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的

  • 本文向大家介绍SpringBoot使用POI进行Excel下载,包括了SpringBoot使用POI进行Excel下载的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了SpringBoot使用POI进行Excel下载的具体代码,供大家参考,具体内容如下 使用poi处理Excel特别方便,此处将处理Excel的代码分享出来。 1.maven引用 2.service逻辑代码 3.contr

  • 简介 在之前的章节我们实现了一个简单但是功能齐全的web项目、学习了如何使用Gradle来构建和运行这个项目。测试代码是软件开发周期中非常重要的一环,能够确保软件的行为能符合预期。这一章我将讲述如何使用Gradle来组织、配置和执行测试代码,学习如何写单元测试、集成测试和功能测试并把他们集成到项目构建中。 Gradle集成了很多Java和Groovy测试框架,在本章的最后你会用JUnit、Test

  • 本节课将介绍如何使用specs —— 一个Scala行为驱动设计(BDD)框架,来进行测试。 扩展规格 让我们直接开始。 import org.specs._ object ArithmeticSpec extends Specification { "Arithmetic" should { "add two numbers" in { 1 + 1 mustEqual