junit如何在多模块项目中使用

文章目录

  • 前言
  • 一、最简单的单元测试
  • 二、springboot多模块测试单元
    • 1.问题
    • 2.解决
  • 总结


前言

相信后端的小伙伴对于junit测试应该不陌生,当我们写好了一些功能之后,由于不太放心是否会出现问题,我们会选择自测;

  • 第一种 通过类似postman之类的,直接走接口测试
  • 第二种 由于构造数据种种原因,导致不好走接口测试,所以走代码测试,即junit测试

在springboot项目中,单模块项目很好做,只要生成测试类即可,那么在springboot多模块项目中如何做junit测试呢? 会有什么问题?


一、最简单的单元测试

例如: 我现在有一个单模块的springboot项目,然后有一个接口,想做下测试,看是否是正确的;
测试用例

Animal 是我编写的一个接口
AnimalTest 就是我为了测试 Animal中的功能,而生成出来的一个单元测试类(junit)

如何生成呢?
生成junit测试类

  • 1 在这个接口类名上单击,然后 artl+enter
  • 2 在弹出的列表中选择create test即可,生成这个测试类
  • 3 加入相关注解 @SpringBootTest 等…
  • 4 开始编写测试用例代码即可
  • 5 例如ss()方法我已经写完了,选中 ss(), 右键执行即可

一定要是生成的测试类,自己建的测试类也行,但是必须与要测试的类,所在包路径一致

二、springboot多模块测试单元

1.问题

分模块后,一般来说测试类与启动类不在同一个模块下,但是测试类启动的时候,需要依赖启动类
例如我做如下拆分
拆分模块
那么当我想在 query,manage 模块创建测试类的时候… 就会出现如上问题,报错如下:

Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

如果想解决此问题,可以选择在 @SpringBootTest(class="***)中指定启动类,但是!!!
由于分模块,一般都是启动类依赖了其他模块,你现在如果在测试类中,引入启动类~~,那就循环依赖了!!

expected at least 1 bean which qualifies as autowire candidate

这个问题是由于未扫描到引入的类,没有被纳入spring容器
例如: 我如果不加 @EnableFeignClients 但是还要用feign 去请求访问的话,那么就会报这个错误

2.解决

解决办法

这两个注解是我用到了,没用到的小伙伴可以不用哈
@EnableDiscoveryClient
@EnableFeignClients
一般的项目只需要 @SpringBootApplication 这个即可

  • 1 在测试文件夹中创建一个启动类,名字无所谓,但是注解要全
/**
 * @author fulin
 * @since 2023/5/10 10:35
 */
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class TestApplication {
}
  • 2 将启动类中的resources文件夹,以及下面的yml配置文件粘贴到test文件夹中

再次启动,发现已经ok了
启动成功
开始打印feign请求日志
feign日志


总结

单元测试的目的是在集成测试和功能测试之前对软件中的可测试单元进行逐一检查和验证。单元测试是程序功能的基本保障,是软件产上线非常重要的一环。
对于后端程序员来说,也是对自己工作的态度,以及与别人撕逼的底气!
普通项目的单元测试,只需要根据快捷键生成测试类,干就完了;
多模块项目的单元测试,则需要上点小小的手段,让他听话工作~~

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

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

相关文章

Spring Boot集成ShardingSphere实现数据加密及数据脱敏 | Spring Cloud 48

一、前言 通过以下系列章节: Spring Boot集成ShardingSphere实现数据分片(一) | Spring Cloud 40 Spring Boot集成ShardingSphere实现数据分片(二) | Spring Cloud 41 Spring Boot集成ShardingSphere实现数据分片&…

SoringBoot——pom文件:starter

先来看一看: 这次我们来介绍SpringBoot的pom文件的另一个好玩的地方:starter。 starter的中文含义是启动器,所以有时候我们在Maven仓库找依赖的时候,如果开启了自动翻译就会经常会看见一个奇怪的词叫做某某弹簧启动器&#xff0…

tomcat集群下的session共享和负载均衡(memcache实现)

环境 操作系统:windows tomcat1:Apache Tomcat/7.0.52(8085) tomcat2:Apache Tomcat/7.0.52(8086) jdk:1.8.0_251 nginx:nginx-1.20.1(8070) memc…

day4-字符设备驱动基础上_基础框架

大纲: 设备分类 申请和注销设备号 函数指针复习 注册字符设备 字符设备驱动框架解析 读操作实现 写操作实现 ioctl操作实现 printk 多个次设备的支持 一、Linux内核对设备的分类 linux的文件种类: -:普通文件 (文件内容、文件名、…

【终极解决方案】IDEA maven 项目修改代码不生效。

【终极解决方案】IDEA maven 项目修改代码不生效。 文章目录 【终极解决方案】IDEA maven 项目修改代码不生效。1、项目问题描述2、可能的解决方案3、分析原因4、解决方案5、参考文献 1、项目问题描述 遇到一个非常奇怪的问题,修改了一个基于maven搭建的SSM项目&am…

c++ this指针

this指针介绍: c中成员变量和成员函数分开存储,每一个非静态成员函数只会有一个实例,多个同类型对象共用这一个成员函数。那么代码怎么区分哪个对象调用自己呢?this指针由此应运而生。 c通过提供对象指针,this指针。…

3D点云的基本操作(基于PCL编程)

知识储备 右手系 右手,拇指,食指,中指,分别是x,y,z的正方向。左手系则同理。 旋转矩阵 本质:两个坐标系之间的旋转关系。 用途:旋转点云。 原理:设传感器的坐标系为O1X1Y1Z1,设…

高分辨率光学遥感图像水体分类综述2022.03

本文是Water body classification from high-resolution optical remote sensing imagery: Achievements and perspectives的学习笔记。 相关资源被作者整理到:这里 文章目录 Introduction基本知识 挑战和机遇挑战1. 有限的光谱信息和小场景覆盖2. 形状、大小和分布…

【Python入门】Python循环语句(while循环的基础语法)

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函…

Spring_jdbcTemplate基本使用

文章目录 一、导入spring-jdbc和spring-tx坐标二、创建数据库表和实体在applicationContext.xml中配置连接池和JdbcTemplate在test数据库中创建account表 三、创建JdbcTemplate对象四、执行数据库操作 一、导入spring-jdbc和spring-tx坐标 <dependency><groupId>o…

Gateway

Gateway Nacos配置管理 同一配置管理 在配置管理界面点击&#xff0b; 然后填写配置信息 配置获取步骤&#xff1a; 引入Nacos的配置管理客户端 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-…

【源码解析】SpringBoot整合AOP原理解析

AOP介绍 AOP&#xff08;Aspect Oriented Programming&#xff09;是基于切面编程的&#xff0c;可无侵入的在原本功能的切面层添加自定义代码&#xff0c;一般用于日志收集、权限认证等场景。 AOP基本概念 通知&#xff08;Advice&#xff09;: AOP 框架中的增强处理。通知…

力扣sql中等篇练习(十八)

力扣sql中等篇练习(十八) 1 银行账户概要 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT u.user_id,u.user_name,u.creditIFNULL(t1.c1,0) credit,case when u.creditIFNULL…

浅谈Hutool工具类

一、Hutool简介 Hutool是一个Java工具类库&#xff0c;它封装了很多常用的Java工具类&#xff0c;如加密解密、文件操作、日期时间处理、Http客户端等。它的目标是让Java开发变得更加简单、高效。 二、Hutool的特点 高效&#xff1a;提供了很多高效的工具类和方法。 简单&…

Vue3-黑马(二)

目录&#xff1a; &#xff08;1&#xff09;vue3-ref与reactive &#xff08;2&#xff09;vue3-基础-属性绑定与事件绑定 &#xff08;3&#xff09;vue3-基础-表单绑定 &#xff08;1&#xff09;vue3-ref与reactive ref函数可以把普通的数据变成响应式的数据&#xff0…

Springboot 自动装配流程分析

目录 1.基础知识&#xff1a; 2.具体代码执行流程 3.流程总结&#xff1a; 4.参考文章&#xff1a; 1.基础知识&#xff1a; springboot的自动装配是利用了spring IOC容器创建过程中的增强功能&#xff0c;即BeanFactoryPostProcessor&#xff0c; 其中的ConfigurationCla…

卡特兰数三个通项公式的推导

前提条件&#xff1a; 有两种操作&#xff0c;一种操作的次数不能超过另外一个&#xff0c;或者是不能有交集这些操作的合法方案数&#xff0c;通常是卡特兰数 情景&#xff1a; 1&#xff09;n个0和n个1构成的字串&#xff0c;所有的前缀子串1的个数不超过0的个数&#xff…

redis(11)

一)基于Set集合实现点赞功能: 在我们的博客表当中&#xff0c;每一篇博客信息都有一个like字段&#xff0c;表示点赞的数量 需求: 1)同一个用户只能点赞一次&#xff0c;再次进行点赞则会被取消&#xff1b; 2)如果当前用户已经点赞过了&#xff0c;那么点赞按钮高亮显示&…

STL-deque容器

双端数组&#xff0c;可以对头端进行插入删除操作 deque 容器和 vecotr 容器有很多相似之处&#xff0c;比如&#xff1a; deque 容器也擅长在序列尾部添加或删除元素&#xff08;时间复杂度为O(1)&#xff09;&#xff0c;而不擅长在序列中间添加或删除元素。deque 容器也可…

win部署CAS服务并使用

前提描述&#xff1a;通过本次了解cas是个什么东西&#xff0c;并使用它。 cas为oss(单点登录)的一种实现方案。要实现cas单点登录&#xff0c;首先需要部署cas的server服务。 CAS是Central Authentication Service的缩写&#xff0c;中央认证服务&#xff0c;。 一、安装CAS…