springboot Junit单元测试默认事务不提交

2023-10-26

一、Junit初次使用

因为以前总觉得Junit单元测试配置比较繁琐,代码功能大多使用main方法或者postman测试,直到最近才使用单元测试,在测试过程中遇到了事务不提交的问题,一直以为是代码问题,后来才直到单元测试默认不提交事务,记录下来,防止以后再次踩坑。


二、Junit事务问题

1. 默认不提交事务(默认回滚)


@SpringBootTest(classes = WebappApplication.class)
@RunWith(SpringRunner.class)
class WebappApplicationTests {
	@Autowired
    WithdrawAccountInfoMapper withdrawAccountInfoMapper;
    
    @Test
    @Transactional
    void testEvent(){
        WithdrawAccountInfo withdrawAccountInfo = new WithdrawAccountInfo();
        withdrawAccountInfo.setBizId(2);
        //入库操作
        withdrawAccountInfoMapper.insertSelective(withdrawAccountInfo);
        ...
        	调用其他业务方法
        ...
    }
}

如上,入库操作不会实现真正入库,sql执行了,但是会回滚,那么,如何提交事务呢,看如下方法。


2. 设置rollback,让Junit提交事务

通过添加@Rollback(false)注解,强制不回滚

@SpringBootTest(classes = WebappApplication.class)
@RunWith(SpringRunner.class)
class WebappApplicationTests {
	@Autowired
    WithdrawAccountInfoMapper withdrawAccountInfoMapper;
    
    @Test
    @Transactional
    @Rollback(false)
    void testEvent(){
        WithdrawAccountInfo withdrawAccountInfo = new WithdrawAccountInfo();
        withdrawAccountInfo.setBizId(2);
        //入库操作
        withdrawAccountInfoMapper.insertSelective(withdrawAccountInfo);
        ...
        	调用其他业务方法
        ...
    }
}

这样,Junit默认的rollback(true),就改成了false,就可以正常提交事务了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot Junit单元测试默认事务不提交 的相关文章

  • junit 测试用例生成器

    有没有一个好的工具可以根据一些原始模板自动生成 jUnit 测试用例 这样一来 没有太多 Java 或 jUnit 背景的工程师就可以编写测试用例 作为背景信息 这是用于黑盒测试 如果除了使用 jUnit 之外还有其他替代方法来运行回归测试
  • 如何对 Java EE 代码进行单元测试?

    我想问一下您测试 Java EE 代码的首选方式 我发现只有三个项目试图帮助在 Java EE 环境中编写单元测试代码 http jakarta apache org cactus http jakarta apache org cactu
  • JUnitCore 停止

    我想停止 销毁正在运行的 JUnitCore 它的启动方式是 JUnitCore run Request aClass ClassToRun Like pleaseStop 在 RunNotifier 上 有任何想法吗 http junit
  • 使用 Scanner 对用户输入进行 junit 测试

    我必须测试类中的一个方法 该方法使用 Scanner 类接受输入 package com math calculator import java util Scanner public class InputOutput public St
  • 如何在任何类中的任何测试之前和之后运行一组代码?

    这是我的测试代码 public class Test1 BeforeClass public void setUp EmbeddedTomcat start test methods AfterClass public void tearD
  • JUnit:在被测类中启用断言

    我已经被Java咬过好几次了assert由于断言未在 JUnit 的 JVM 实例中启用 因此在 JUnit 测试套件中未失败的语句 需要明确的是 这些是实现内部的 黑盒 断言 检查不变量等 而不是 JUnit 测试本身定义的断言 当然 我
  • 有没有办法访问私有 plsql 过程以进行测试?

    我正在开发一个包含大量 plsql 代码的项目 并希望向我们的代码库添加更具体的单元测试 我喜欢测试的一些过程 函数不在包规范中 我无法更改它 有没有办法访问这些 私有 plsql 过程而不将它们添加到规范中 到目前为止 我唯一的想法是在测
  • 将 JMeter 报告转换为 JUnit 报告

    如何将 JMeter 报告转换为 JUnit 报告 有些工具 例如 VSTS 知道如何集成 JUnit 报告 但不知道如何集成 JMeter 报告 尽管它们可以运行 JMeter 我创建了一个 XSLT 将 XML JMeter 报告转换为
  • 在 Eclipse 中找不到 run as junit test

    我在 Eclipse 中创建了一个这样的测试类 RunWith SpringJUnit4ClassRunner class ContextConfiguration locations classpath applicationContex
  • GrantPermissionCallable:权限:无法授予 android.permission.SET_TIME

    我正在尝试使用新的授予权限规则 https developer android com reference android support test rule GrantPermissionRule html这是最新支持库的一部分 在我的清
  • assertThat - hamcrest - 检查列表是否已排序

    好吧 我认为这将是一个简短的问题 我有一个按日期排序的 ArrayList 当然我看到它有效 但我也想为它编写一个测试 我想检查列表中的下一个值 日期 是否低于前一个值 我可以使用一些来做到这一点fors 并添加临时列表 但我想知道是否有更
  • JDBC/数据库单元测试的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有与多个数据库 如 Sybase Postgress DB2 等 通信的代码 因此 我有不同的模块 对每个数据库都有不同的查询 我开始使用 H
  • 使用 IntelliJ 运行 JUnit 测试

    我正在使用 IntelliJ 2018 1 并且我正在尝试运行TeaVM http teavm org JUnit 测试 但运行测试时CTRL SHIFT F10测试被跳过 RunWith TeaVMTestRunner class Ski
  • 形成 Mockito“语法”

    Mockito 看起来像是一个非常可爱的 Java 存根 模拟框架 唯一的问题是我找不到任何关于使用他们的 API 的最佳方法的具体文档 测试中常用的方法包括 doXXX Stubber when T OngoingStubbing the
  • java - JUnit 测试失败挂钩上的 Cucumber

    我们使用 Cucumber JVM 编写验收测试脚本 并使用 JUnit 来执行它们 通过 JUnit Cucumber 运行程序 由于这些测试涉及 Selenium WebDriver 因此我希望能够在测试失败时截取屏幕截图 我有代码 如
  • 如何处理Junits中Maven和Intellij之间的相对路径

    我有一个带有模块的 Maven 项目 myProject pom xml myModule pom xml foo bar txt 考虑一个 JunitmyModule需要打开哪个bar txt 对于 maven basedir 是模块目录
  • Ant JUnit ClassNotFoundException

    我意识到有很多类似的问题this one https stackoverflow com questions 10658636 new to ant classnotfoundexception with junit 但是在阅读了其中的大多
  • 更改 Eclipse 启动配置中的默认“要运行的程序”

    我时不时地使用以下命令从 Eclipse 中启动 JUnit 测试 运行方式 gt JUnit 插件测试 默认情况下 Eclipse 假设您正在运行需要工作台的东西 并在启动配置的 Main 部分中进行选择 LaunchConfig gt
  • 在单独的项目中创建单元测试是 Android 的正确方法吗?

    关于如何开始在 Android 中进行测试的描述似乎不一致 http developer android com guide topics testing testing android html http developer androi
  • ant-找不到符号@Test

    我正在尝试编译以下仅包含一个函数的类 公共类测试注释 Test public void testLogin System out println Testing Login 当我将文件作为 JUNIt 运行时 它可以工作 但是当我尝试从 b

随机推荐

  • html input ng model,AngularJS ng-model用法及代码示例

    ngModel是绑定输入 选择和文本区域 并将所需的用户值存储在变量中的指令 我们可以在需要该值时使用该变量 在验证过程中也以某种形式使用它 我们可以将ngModel用于 输入文本 复选框 无线电 数 电子邮件 网址 日期 datetime
  • 人工智能研究的新前线:生成式对抗网络

    林懿伦 戴星原 李力 王晓 王飞跃 来源 科学网 摘要 生成式对抗网络 Generative adversarial networks GAN 是当前人工智能学界最为重要的研究热点之一 其突出的生成能力不仅可用于生成各类图像和自然语言数据
  • iptables 实现域名过滤

    1 需求 过滤指定的域名 网站 如www baidu com www bilibili com 2 实现方案 方案1 字符串过滤 iptables A FOWARD m string algo kmp string bilibili com
  • Dynamics 365 CRM Online 使用Ribbon Workbench 2016在view或form上添加按钮并实现CURD

    目标 Dynamics 365 CRM Online 使用Ribbon Workbench 2016在view或form上方添加按钮并根据View中所选中的记录实现CURD 内容步骤 1 安装Ribbon workbench 2016 可参
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中

    代码 using System using System Web using System Web UI using System Web UI HtmlControls using System Web UI WebControls na
  • ubuntu执行apt-get install出现E: Unable to locate package 问题

    报错原因 就是没找到你要安装的那个软件 解决方法 1 检查你要安装的软件名中 是不是吧英文的 写成了中文的 2 所要安装的那个软件已经不存在了 极有可能是改名了 所以你需要执行apt cache search 关键字 查找你所要安装的这类软
  • W800系列

    目录 续前文 调试前配置 下载调试 增加一个新的demo 目前存在的问题 待解决 win11系统提示调试错误 驱动问题解决步骤 供复现及参考分析用 调试仿真错误 T HeadDebugServer运行截图 续前文 W800系列 ST LIN
  • 用例的一些知识

    一 用例执行 说明 执行结果与用例的期望结果不一致 含义 为缺陷 提示 用例结果不通过为缺陷 需要进行缺陷管理 二 缺陷 01定义 软件中存在的各种问题 都为缺陷 简称bug 02缺陷标准 少功能 功能错误 多功能 缺少隐形功能 易用性 软
  • Android NDK 开发:实战案例

    0 前言 如果只学理论 不做实践 不踩踩坑 一般很难发现真正实践项目中的问题的 也比较难以加深对技术的理解 所以延续上篇 JNI 的实战Android NDK开发 JNI实战篇 这篇主要是一些 NDK 小项目的练习 由于这些项目网上都有 d
  • CGAL---点云处理

    CGAL是一款几何处理库 但是介绍其在点云中处理的资料比较少 现介绍一个专门介绍CGAL在点云数据中处理的网站 比包括常见的点云数据处理 功能包括 1 聚类 欧式聚类 2 配准 ICP 3 简化 格网 4 平滑 5 法向量估算 6 特征估算
  • C++ static的作用

    1 什么是static static 是C 中很常用的修饰符 它被用来控制变量的存储方式和可见性 2 为什么要引入static 函数内部定义的变量 在程序执行到它的定义处时 编译器为它在栈上分配空间 大家知道 函数在栈上分配的空间在此函数执
  • 鱼眼去锯齿

    include
  • hexo更换主题后出现问题:WARN No layout: index.html

    hexo更换主题后出现问题 WARN No layout index html hexo本地测试运行重启后页面空白 hexo g出现以上错误 错误原因 运行git clone 指令获得主题后 假设是NEXT主题 在theme主题下保存文件夹
  • 火狐不能同步的问题

    火狐不能同步的问题 解决方法 下载同版本的软件并且切换成同一个服务器类型 打开 帮助 gt 关于Firefox 查看连个软件版本号和上线时间是否一致 如果不一致 则下载最新版 同版本同上线时间 的软件 如果一致 右上角菜单 gt 选项 gt
  • 【状态估计】基于UKF法、AUKF法的电力系统三相状态估计研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及数据 1 概述 基于UKF法和AUKF法的电力系统三相状
  • Unity 鼠标拖动旋转物体,并且物体不会越转越乱

    用Mathf Abs 绝对值 计算鼠标水平和竖直方向谁的位移更大 减少因为一丢丢的其他方向移动导致的物体微幅旋转影响后面物体旋转会越来越混乱 这样可以让物体旋转更好的单个方向进行旋转 代码如下 public float speed 2f v
  • vue使用富文本编辑器:vue-quill-editor粘贴图片+图片上传服务器+预览图片

    引入vue quill editor 初始化vue quill editor npm install vue quill editor save 部分页面引入组件 import quill dist quill core css impor
  • 51单片机实现串口通信(主单片机到从单片机发送LED流水灯)

    其实这是个51单片机串口通信的小例子 课堂上老师说你们可以去尝试弄一下 于是就去网上找一下资料 就做了这个实验 先把一个作为主机 用来发送数据 另一个作为从机 用来接收数据 将两个程序各自烧录到对应的板子上去 并将主机的TX P3 0 接到
  • VS C++ 生成类图

    C 中如何快速清晰的了解定义类型及类型之间的关联关系 一个好的类图有助于你快速了解 那么怎么去生成一个类图呢 下面步骤可以帮到你 一 安装类设计器组件 1 确定是否已经安装 类设计器 如果未安装 可以打开 工具 gt 获取工具和功能 或者直
  • springboot Junit单元测试默认事务不提交

    目录 一 Junit初次使用 二 Junit事务问题 1 默认不提交事务 默认回滚 2 设置rollback 让Junit提交事务 一 Junit初次使用 因为以前总觉得Junit单元测试配置比较繁琐 代码功能大多使用main方法或者pos