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

news2024/10/5 18:31:44

文章目录

  • 前言
  • 一、最简单的单元测试
  • 二、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日志


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Halcon 找到产品上 圆圈中的7个点

文章目录 1 关键实现环节演示2 完整代码 及 原图文章目录 1 关键实现环节演示2 完整代码 及 原图找到下图 圆圈中的7个点; 思路: 先找到圆圈外面的矩形, 再找到里面的圆圈, 最后找到圆圈里面的 圆点 1 关键实现环节演示 二值化 阈值分割止 之后,打散, read_image (im…

很多博主用Markdown格式文章?直呼真不错!

概述 Markdown 是一种轻量级标记语言,它可以使我们专注于写作内容,而不用过多关注排版,很多博主、作家等都用它来撰写文章~ 本文将给各位小伙伴介绍 Markdown 语法的使用,本篇文章索奇就是用的纯 markdown 语法来写的~ 标题 一级…

EKMA曲线绘制、MCM箱模型应用与O3形成途径、生成潜势、敏感性分析

目录 EKMA曲线及大气O3来源解析 MCM箱模型实践技术应用与O3形成途径、生成潜势、敏感性分析 一、 大气中O3形成知识基础、MCM和Atchem2原理及Linux系统安装 二、 MCM建模、数据输入、模型运行及结果输出 【讲解案例操作】 三、 O3形成途径、生成潜势及其敏感性分析 【讲解…

2023 谷歌I/O发布会新AI,PALM 2模型要反超GPT-4,一雪前耻!

文章目录 1 前言2 Google I/O 发布者大会3 PaLM 2模型3 Bard项目4 其他AI工具4.1 AI 图片编辑 Magic Editor4.2 Duet AI 办公4.3 Universal Translator 翻译工具4.4 Google 沉浸式导航4.5 Google 搜索引擎 5 讨论 1 前言 每年必看两大会,苹果发布会和谷歌发布会&am…

搭建AI虚拟数字人是一项复杂的任务,需要掌握多个技术领域的知识,包括机器学习、自然语言处理、计算机图形学等。

搭建AI虚拟数字人是一项复杂的任务,需要掌握多个技术领域的知识,包括机器学习、自然语言处理、计算机图形学等。以下是搭建AI虚拟数字人的一般步骤: 确定需求和功能:首先需要确定虚拟数字人的用途和需要实现的功能,例…

精心设计的ChatGPT网页版源码最聪明的镜像ChatGPT

demo软件园每日更新资源,请看到最后就能获取你想要的: 1.精心设计的 ChatGPT网页版源码 最聪明的镜像ChatGPT ChatGPT网页版源码 最聪明的镜像ChatGPT 支持GPT3.5turbo以及GPT4.0turbo的各种版本模型 精心设计的 UI,响应式设计,支持深色模式 极快的首…

【LeetCode】932. 漂亮数组

932. 漂亮数组(中等) 解法一:分治法 重点 这里给出两个定理: 如果 X,Y,Z 是漂亮数组,则 k * X b, k * Y b, k * Z b 一定也是漂亮数组;奇数 偶数 奇数。 因此不难证明,如果 2 * Y ≠ X…

vue+elementui写了一个图书管理系统

用vueelementui写了一个图书管理系统 转载自公号:java大师 目前是指一个纯前端的展示,后端还在开发中,前端接口是通过json-server模拟的 用到的技术栈 1、vue.js 2、elementui 3、json-server 4、axios 5、vue-router 动态路由 目录结构…

Java每日一练(20230511) 有效数字、重复元素II、类和子类

目录 1. 有效数字 🌟🌟🌟 2. 存在重复元素 II 🌟🌟 3. 设计学生类Student和它的一个子类Undergraduate 🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专…

基于postgresql传统数据仓库搭建

目录 概述数仓选型对比当前数仓架构问题解决方案 架构设计数据仓库设计命名规范模型设计 PostgreSQL的安装数据仓库的建立创建数据库创建用户组创建用户用户加入到用户组创建模式模式授权用户收回函数的执行权限公开表的select权限动态sql函数集中处理函数 fdw实现数据抽取安装…

ChatGPT与Discord无缝接入指南,获取你的专属聊天机器人

ChatGPT与Discord无缝接入指南,获取你的专属聊天机器人 一、获取OpenAI API密钥。二、获取Discord Token三、注册GitHub,有账号的可以直接登录。四、在线开发环境搭建Replit五、注册cron-job.org本教程收集于: AIGC从入门到精通教程 ChatGPT和Discord都非常流行,而在Disco…

基于RK3588s人工智能大算力多网口工业网关交换机,可接5路千兆高清相机

RK3588/RK3588S AI BOX 功能接口说明 接口需求 功能定义与要求 备注 成本与目标 硬件设计争取全国产化, 632GB 版本 RK3588S PCBA 尺寸 146*102 丝印版本号 RK3588S AI BOX V1.0 EMMC 支持 SanDisk SDINBDA4-32/64/128G 4G-8GB 标配 8GB …

tensorboard如何使用

神经网络本身比较难理解,看起来很神秘,所以我们可以借助可视化根据tensorboard关注神经网络的运行过程,其中包括了各项数据指标以及神经网络自身的图结构。 TensorBoard 是 TensorFlow 的可视化工具,可以帮助用户更好地理解和调试…

【Linux】项目自动化构建工具make/makefile

🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、make/makefile的背景二、…

00后卷起来,真没我们老油条什么事了···

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,工作没两年,跳槽到我们公司起薪20K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。…

Android 中你碰不到但是很重要的类之ActivityThread

作者:Drummor 通过本文能了解一下内容 1、和系统进程打交道的桥头堡 应用进程起来之后ART(Android Runtime)第一站就是ActivityThread,代码层面上就是ActivityThread的main()方法,是不是很熟悉,爷青回啊,这不就是java…

基于深度学习的动物识别系统的实现

项目介绍 动物识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对18种动物数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台&…

数据分析师 ---- SQL强化(3)

数据分析师 ---- SQL强化(3) 题目:每个月Top3的周杰伦歌曲 从听歌流水中找到18-25岁用户在2022年每个月播放次数top 3的周杰伦的歌曲 输入例子: drop table if exists play_log; create table play_log (fdate date,user_id int,song_id int ); inser…

前端的培训计划书

文章目录 导文模板一一、前言二、培训目标三、培训内容和计划 模板二模板三 导文 这里是导文 模板一 一、前言 随着互联网的快速发展,前端开发已经成为了现代软件开发中一个不可或缺的重要技能。本次培训旨在帮助学员快速掌握前端开发的核心知识和技能&#xff0c…

ChatGPT实现撰写邮件

撰写邮件 电子邮件是日常工作中很常用的工具,在相对正式的场合,一封格式美观、用语典雅的电子邮件正文会起到很好的作用。ChatGPT 可以较好的完成电子邮件的编写和格式美化工作。 下面让我们以产品销售的角度,写一封推销邮件。假定产品名称…