spring boot 测试单元修改数据库不成功的解决

目录
  • spring boot 测试单元修改数据库不成功
  • springboot 数据库无法进行更改的情况之一
    • @test迟迟无响应
    • 现象
    • 原因
    • 解决方法

spring boot 测试单元修改数据库不成功

spring boot 集成data jpa 在test区测试数据库操作的时候,查询正常,但是其他对数据库更改却不能成功,例如存入数据库,会报read-only,这时候需要添加@transactional注解,终于不报错了,但是在存入一次后,却发现数据库并没有数据,这是为什么呢?

再查看log时候发现,事务竟然回滚了,没错,查询资料,原来spring boot测试单元为了默认会事务回滚,这时候需要添加强制不回滚注解,@rollbask(false),其中上面两个注解是为了让测试运行spring环境,也就是当前项目配置。

springboot 数据库无法进行更改的情况之一

@test迟迟无响应

现象

springboot项目测试更新数据库,在开始执行的时候迟迟无法结束,就像上图一样转个不停。

原因

数据库做了修改,却没有提交。

解决方法

提交数据库的更改

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈spring-boot的单元测试中,@Before不被执行的原因

    我们先来看下笔者的单元测试的依赖版本: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from reposi

  • 详解Spring Boot实战之单元测试

    本文介绍使用Spring测试框架提供的MockMvc对象,对Restful API进行单元测试 Spring测试框架提供MockMvc对象,可以在不需要客户端-服务端请求的情况下进行MVC测试,完全在服务端这边就可以执行Controller的请求,跟启动了测试服务器一样. 测试开始之前需要建立测试环境,setup方法被@Before修饰.通过MockMvcBuilders工具,使用WebApplicationContext对象作为参数,创建一个MockMvc对象. MockMvc对象提供一组工具

  • Springboot使用Junit测试没有插入数据的原因

    从写Junit开始笔者就有一个疑问,为什么执行插入测试方法成功了但是数据库里却没有对应数据,那怎么测试的呢?今天查阅了资料找到了原因 1.Junit测试原理 springboot中使用junit编写单元测试默认是事物回滚的,这样测试的脏数据不影响数据库,即实际上是执行了对应的插入操作,但是完成操作后执行了事务回滚操作,从而数据库中没有对应数据. 2.关闭自动事务回滚 在对应的测试方法上添加@Rollback(false)关闭回滚. 补充知识:Spring Boot Junit无法执行问题汇总 S

  • springboot整合H2内存数据库实现单元测试与数据库无关性

    一.新建spring boot工程 新建工程的时候,需要加入JPA,H2依赖 二.工程结构 pom文件依赖如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:s

  • spring boot 测试单元修改数据库不成功的解决

    目录 spring boot 测试单元修改数据库不成功 springboot 数据库无法进行更改的情况之一 @test迟迟无响应 现象 原因 解决方法 spring boot 测试单元修改数据库不成功 spring boot 集成data jpa 在test区测试数据库操作的时候,查询正常,但是其他对数据库更改却不能成功,例如存入数据库,会报read-only,这时候需要添加@transactional注解,终于不报错了,但是在存入一次后,却发现数据库并没有数据,这是为什么呢? 再查看log时候

  • Spring boot测试找不到SpringRunner.class的问题

    目录 Spring boot测试找不到SpringRunner.class 原因 解决方式 @RunWith(SpringRunner.class)测试SpringRunner.class找不到报红 SpringRunner报红无法添加类 问题解决 Spring boot测试找不到SpringRunner.class 原因 Maven依赖有一个<scope>,因为JUnit是直接添加到路径中,并不是通过Maven依赖加入,如果加入了<scope>会导致匹配不上         &l

  • Spring Boot集成MyBatis访问数据库的方法

    基于spring boot开发的微服务应用,与MyBatis如何集成? 集成方法 可行的方法有: 1.基于XML或者Java Config,构建必需的对象,配置MyBatis. 2.使用MyBatis官方提供的组件,实现MyBatis的集成. 方法一 建议参考如下文章,完成集成的验证. MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql 基于Spring + Spring MVC + Mybatis 高性能web构建 spring与mybatis三种整合

  • spring boot测试打包部署的方法

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发.调试.打包到最后的投产上线. 开发阶段 单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. 1.在pom包中添加spring-boot-starter-test包引用 <dependency> <groupId>org.springframework.boot</groupI

  • 如何设置Spring Boot测试时的日志级别

    1.概览 该教程中,我将向你展示:如何在测试时设置spring boot 日志级别.虽然我们可以在测试通过时忽略日志,但是如果需要诊断失败的测试,选择正确的日志级别是非常重要的. 2.日志级别的重要性 正确设置日志级别可以节省我们许多时间. 举例来说,如果测试在CI服务器上失败,但在开发服务器上时却通过了.我们将无法诊断失败的测试,除非有足够的日志输出. 为了获取正确数量的详细信息,我们可以微调应用程序的日志级别,如果发现某个java包对我们的测试更加重要,可以给它一个更低的日志级别,比如DEB

  • Spring Boot启动端口修改方法

    spring boot是个好东西,可以不用容器直接在main方法中启动,而且无需配置文件,方便快速搭建环境.可是当我们要同时启动2个springboot工程时,就会有问题,有可能会因为8080端口被第一个应用占用而导致第二个应用无法启动,这时就需要修改其中一个工程的启动端口. 1.可以通过实现EmbeddedServletContainerCustomizer接口来实现: public class Application extends SpringBootServletInitializer

  • Spring Boot中使用MongoDB数据库的方法

    MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文档数据库──NoSql数据库的一种.NoSql,全称是 Not Only Sql,指的是非关系型的数据库. 特点 MongoDB数据库的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: * 面向集合存储,易存储对象类型的数据. * 模式自由. * 支持动态查询. * 支持完全索引,包含内部对象

  • Spring Boot Admin 动态修改日志级别的方法步骤

    [前言] 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性能同时又能在出现问题时打印详细的信息来快速定位问题:最近研究一下Spring Boot Admin中动态日志级别调整,并集成项目中,在此与大家共享: [动态修改日志级别]          一.生产环境日志输出的状况 1.生产环境日志输出的困惑 A.设置日志输出级别为info: (1)优点:可以详细的打印日志,有利于排错: (2)缺点:日志消耗系统的性能较大:只能针对整个系统整体设置日志输出较多,定位

  • 嵌入式Redis服务器在Spring Boot测试中的使用教程

    1.概述 Spring Data Redis提供了一种与Redis实例集成的简单方法. 但是,在某些情况下,使用嵌入式服务器比使用真实服务器创建开发和测试环境更方便. 因此,我们将学习如何设置和使用嵌入式Redis服务器. 2.依赖 让我们首先添加必要的依赖项: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis

  • Spring Boot 自定义 Shiro 过滤器无法使用 @Autowired问题及解决方法

    在 Spring Boot 中集成 Shiro,并使用 JWT 进行接口认证. 为了统一对 Token 进行过滤,所以自定义了一个 JwtTokenFilter 过滤器. 期间遇到了以下几个问题,这里逐一进行记录,以备日后查阅. 问题一:JwtTokenFilter 无法使用 @Autowired 因为自定义了一个 JWT Token 工具类,用来解析和创建 Token,JwtTokenFilter 中需要用到此工具类,这里本来可以直接手动进行 new 一个新的实例,但由于在 Spring 配置

随机推荐