SpringBoot使用Mock进行单元测试

需求说明:需要对一个service接口进行单元测试

1.在pom.xml中加入依赖

<?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:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>org.example</groupId>
    <artifactId>springboot-interview-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!--引入springboot内置的tomact作为启动容器,不然启动后会自动关闭-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- MySQL驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
        <!-- 集成MyBatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.19</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.28</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>


        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>2.0.2</version>
        </dependency>
       <!-- <dependency>
              <groupId>org.powermock</groupId>
              <artifactId>powermock-module-junit4</artifactId>
              <version>2.0.2</version>
        </dependency>-->
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>2.0.2</version>
            <scope>test</scope>
        </dependency>


    </dependencies>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

2.编写controller类

@RestController
@RequestMapping("/tx")
public class TxClassController {

//    @Autowired
//    private TxClass txClass;

   // @GetMapping("tx_required")
    public String testTx() throws Exception {
        TxTable txTable=TxTable.getInstance();
        System.out.print("AAAAAAAAAAAAAAAAAA");
        return "success";
    }
}

3.编写实体类

@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity(name = "oct_tx")
public class TxTable {

    private static TxTable txTable= new TxTable();

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name="name")
    private String name;

    public static TxTable getInstance(){
        return txTable;
    }
}

4.编写测试类

@RunWith(PowerMockRunner.class)
@PrepareForTest({TxClassController.class,TxTable.class})
public class TxClassControllerTest {

    @InjectMocks
    private TxClassController txClassController;

    @Mock
    private TxClass txClass;

    @Test
    public void test() throws Exception {
        PowerMockito.mockStatic(TxTable.class);
        TxTable txTableMock=PowerMockito.mock(TxTable.class);
        PowerMockito.when(TxTable.getInstance()).thenReturn(txTableMock);
        txClassController.testTx();
    }
}

测试结果:

出现这个说明已经模拟对象成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/634672.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch8.x 向量搜索实现图搜图及文搜图

文章目录 docker 安装 es 8.x通过eland上传机器学习模型从网站上爬取图片数据将图片数据写入es中实现文搜图及图搜图 docker 安装 es 8.x version: "3"services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:8.13.2environment:- discovery…

接口自动化用例怎么写?怎样设计?

一、前言 在开始接口测试之前&#xff0c;我们来想一下&#xff0c;如何进行接口测试的准备工作。或者说&#xff0c;接口测试的流程是什么&#xff1f;有些人就很好奇&#xff0c;接口测试要流程干嘛&#xff1f;不就是拿着接口文档直接利用接口测试工具测试嘛 其实&#xf…

Mia for Gmail for Mac:Mac用户的邮件管理首选

对于追求高效工作的Mac用户来说&#xff0c;Mia for Gmail for Mac无疑是邮件管理的首选工具。它以其卓越的性能和丰富的功能&#xff0c;为用户带来了前所未有的高效邮件管理体验。 Mia for Gmail for Mac不仅支持多帐号登录和标签选择功能&#xff0c;还提供了邮件分类、垃圾…

Vue3:动态路由+子页面(新增、详情页)动态路由配置(代码全注释)

文章目录 实现思路调用后端接口获取用户权限获取页面权限动态绑定到路由对象中动态添加子页面路由 实现思路 emm&#xff0c;项目中使用动态路由实现根据后端返回的用户详情信息&#xff0c;动态将该用户能够访问的页面信息&#xff0c;动态生成并且绑定到路由对象中。但是后…

必应bing国内推广开户,全方位必应广告开户流程介绍!

在所有获客渠道中&#xff0c;搜索引擎广告成为企业扩大品牌影响力、精准触达目标客户的关键途径之一。作为全球领先的搜索引擎之一&#xff0c;必应&#xff08;Bing&#xff09;拥有庞大的用户群体和独特的市场优势&#xff0c;是企业不可忽视的营销阵地。云衔科技&#xff0…

Spring Web MVC介绍及详细教程

目录 1.什么是Spring Web MVC&#xff1f; 1.1 MVC定义 1.2 Spring MVC与MVC关系 2.为什么要学习Spring MVC 3.项目创建 4.Spring MVC连接 4.1 RequestMapping 4.2 PostMapping和GetMapping 5.Spring MVC参数获取 5.1 获取单个参数 5.2 获取多个参数 5.3 获取普通对…

echart 折线图tooltip

运行结果 代码 import { truncate, merge } from lodash; import { getBasePieOptions, getTooltipFormatter } from "*/money/utils";const colorArray [#1F8BFF, #EDBE75, #26E3F0, #AF8FFF, #61DDAA, #FD996A, #8367E0, #1AAF87]export function getLineOptions…

Prompt Engineering Guide

本文转载自&#xff1a;Prompt Engineering Guide https://www.promptingguide.ai/zh/introduction/basics 文章目录 提示工程简介1、基本概念1&#xff09;基础提示词2&#xff09;提示词格式 2、提示词要素3、设计提示的通用技巧从简单开始指令具体性避免不精确做还是不做&am…

【Spring security】【pig】Note03-pig token令牌解析器过程

&#x1f338;&#x1f338; pig token令牌解析器过程 &#x1f338;&#x1f338; pig后端源码 一、解析请求中的令牌值。 二、验证令牌 内省并验证给定的令牌&#xff0c;返回其属性。返回映射表示令牌有效。 /*** author lengleng* date 2019/2/1 扩展用户信息*/ publi…

互联网医院开发:引领智慧医疗新时代

随着科技的迅猛发展和互联网的普及&#xff0c;传统医疗模式正在迎来一场深刻的变革。互联网医院的崛起&#xff0c;打破了时间和空间的限制&#xff0c;为患者和医疗机构带来了更加便捷、高效、安全的医疗服务体验。本文将从技术角度深入探讨互联网医院的开发&#xff0c;包括…

货源困扰?没有货源也能做视频号电商,让你告别没有货源的困扰

大家好&#xff0c;我是电商花花。 目前视频号小店作为2024最有潜力的&#xff0c;最值得我们做的一个电话项目。 视频号小店作为一个新的直播电商平台&#xff0c;目前该项目还处于红利期间&#xff0c;流量大&#xff0c;商家少&#xff0c;现在入行的商家都可以享受到项目…

二级建造师考试工作年限怎么计算?中霖教育怎么样?

二级建造师考试对于工作年限有明确的要求&#xff0c;在计算二级建造师考试所需的工作年限时&#xff0c;考生需依据其所取得的教育类型来分别处理。 对于非全日制学历背景的考生&#xff0c;相关专业工作年限包括从获取规定学历之前直至报考当年年末所从事的该项工作的整个时…

网络安全技术与应用:远程控制与数据库安全

实验准备 软件&#xff1a;VMware Workstation Pro 虚拟机&#xff1a;Red Hat Enterprise Linux 7 服务器&#xff0c;Red Hat Enterprise Linux 7 客户端 网络模式&#xff1a;NAT模式 1、配置服务器及客户端网络 服务器IP 客户端IP 测试相互通信 在客户机上设置镜像&#…

Paddle 傅里叶变换基础及领域应用

Paddle 傅里叶变换基础及领域应用 1. 傅里叶变换基础 1.1 傅里叶变换简介 傅里叶变换是一种重要的信号处理技术&#xff0c;它可以将一个信号从时域转换到频域。在频域中&#xff0c;信号的频率特性更加明显&#xff0c;有利于分析和处理。傅里叶变换的基本思想是将一个信号…

网络原理3

运营商路由器&#xff0c;也可以把它当做一个NAT设备它就会对中间经过的数据包&#xff0c;进行网络地址转换当内网设备经过运营商路由器访问外网的时候就会把IP数据包中的源ip&#xff0c;替换成它自己的ip. 我的电脑要发送一个数据给cctalk服务器此时&#xff0c;我的电脑上就…

虎牙连续10个季度营收下滑,林松涛“三年计划“的游戏服务,没能扛起增收大旗

直播内卷的风&#xff0c;从大平台吹到了游戏直播的垂直赛道。 “游戏直播第一股”虎牙(NYSE&#xff1a;HUYA&#xff09;&#xff0c;已经连续10个季度营收下滑。 据虎牙最近发布的2024年一季报&#xff0c;当期营收15.04亿&#xff0c;同比减少23.1%。这已经是虎牙连续第1…

uniappx 安卓保活(多种技术;UTS版) Ba-KeepAlive-U

简介&#xff08;下载地址&#xff09; Ba-KeepAlive-U 是一款android原生保活插件&#xff0c;UTS版本&#xff08;同时支持uniapp和uniappx&#xff09;&#xff0c;支持市面上大部分机型&#xff0c;Android4.4到Android14&#xff08;**注意&#xff1a;**不保证支持所有机…

Android HAL到Framework

一、为什么需要Framwork? Framework实际上是⼀个应⽤程序的框架&#xff0c;提供了很多服务&#xff1a; 1、丰富⽽⼜可扩展的视图&#xff08;Views&#xff09;&#xff0c; 可以⽤来构建应⽤程序&#xff0c;它包括列表&#xff08;lists&#xff09;&#xff0c;⽹格&am…

【前端】深入浅出响应式布局

深入浅出前端响应式布局 在当今的网页设计与前端开发中&#xff0c;创建能够适应多种设备和屏幕尺寸的网页已成为必备技能。响应式布局&#xff08;Responsive Layout&#xff09;旨在通过灵活的设计和技术手段&#xff0c;让网页内容能够根据用户的设备环境自动调整&#xff…

Web 3D 框架简介

前言 3D游戏引擎的历史可以追溯到20世纪80年代末和90年代初。当时,计算机技术迅速发展,人们开始对图形和游戏感兴趣。以下是3D游戏引擎的历史故事: 早期引擎的诞生(1980-1990年代) 在这个时期,一些早期的3D游戏引擎开始出现。其中一个著名的例子是id Software开发的Do…