直接使用Junit测试Spring应用的4点不足

在开发基于Spring的应用时,如果你还直接使用Junit进行单元测试,那你就错过了Spring为我们所提供的饕餮大餐了。使用Junit直接进行单元测试有以下四大不足:

1)[b]导致多次Spring容器初始化问题[/b]

根据JUnit测试方法的调用流程,每执行一个测试方法都会创建一个测试用例的实例并调用setUp()方法。由于一般情况下,我们在setUp()方法中初始化Spring容器,这意味着如果测试用例有多少个测试方法,Spring容器就会被重复初始化多次。虽然初始化Spring容器的速度并不会太慢,但由于可能会在Spring容器初始化时执行加载Hibernate映射文件等耗时的操作,如果每执行一个测试方法都必须重复初始化Spring容器,则对测试性能的影响是不容忽视的;

[color=green]-->使用Spring测试套件,Spring容器只会初始化一次![/color]

2)[b]需要使用硬编码方式手工获取Bean[/b]

在测试用例类中我们需要通过ctx.getBean()方法从Spirng容器中获取需要测试的目标Bean,并且还要进行强制类型转换的造型操作。这种乏味的操作迷漫在测试用例的代码中,让人觉得烦琐不堪;

[color=green]-->使用Spring测试套件,测试用例类中的属性会被自动填充Spring容器的对应Bean
,无须在手工设置Bean![/color]

3)[b]数据库现场容易遭受破坏[/b]

测试方法对数据库的更改操作会持久化到数据库中。虽然是针对开发数据库进行操作,但如果数据操作的影响是持久的,可能会影响到后面的测试行为。举个例子,用户在测试方法中插入一条ID为1的User记录,第一次运行不会有问题,第二次运行时,就会因为主键冲突而导致测试用例失败。所以应该既能够完成功能逻辑检查,又能够在测试完成后恢复现场,不会留下“后遗症”;

[color=green]-->使用Spring测试套件,Spring会在你验证后,自动回滚对数据库的操作,保证数据库的现场不被破坏,因此重复测试不会发生问题![/color]

4)[b]不方便对数据操作正确性进行检查[/b]

假如我们向登录日志表插入了一条成功登录日志,可是我们却没有对t_login_log表中是否确实添加了一条记录进行检查。一般情况下,我们可能是打开数据库,肉眼观察是否插入了相应的记录,但这严重违背了自动测试的原则。试想在测试包括成千上万个数据操作行为的程序时,如何用肉眼进行检查?

[color=green]-->只要你继承Spring的测试套件的用例类,你就可以通过jdbcTemplate在同一事务中访问数据库,查询数据的变化,验证操作的正确性![/color]


Spring提供了一套扩展于Junit测试用例的测试套件,使用这套测试套件完全解决了以上四个问题,让我们测试Spring的应用更加方便。现在我的项目中已经完成摒弃Junit,而采用Spring的测试套件,确实带来了很大的便利。严重推荐Springer使用这个测试套件。这个测试套件主要由org.springframework.test包下的若干类组成,使用简单快捷,方便上手。

[color=red] 注:以上四个不足的总结摘自《精通Spring 2.x --企业应用开发详解》[/color]
Spring5整合Junit4、Junit5测试bean Spring5整合Junit4(要求Junit4的版本不能低于4.12) //测试类 @RunWith(SpringJUnit4ClassRunner.class)//指定Junit4使用Spring提供的测试环境 @ContextConfiguration("classpath:applicationContext.xml")//指定要为此测试类加载的Spring配置文件 public cl... 阅读详情

相关推荐

半小时轻松搞定 JUnit4

本资源能让您很轻松惬意的搞定JUNIT 原理和应用!

Junit使用中的问题

今天尝试使用JUnit,下载了最新的JUnit版本,是4.11,结果尝试使用发现总是报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing这样的错误,上网查了一下,一般的解决方案是,换一个低一点的版本就好了。还有人说,是缺少hamcrest的包。去官网又看了一下,结果发现这样一段话:   junit.jar: Includes ...

qq_35140245的博客 324

IoT 平台架构全景图:从设备到 AI 的完整技术体系深度解析

随着物联网设备规模进入百万级时代,IoT 平台架构已经从简单的设备接入系统演变为完整的数据平台。本文从系统架构师视角,深度解析 IoT 平台的完整技术体系,包括设备接入、MQTT 通信、消息流平台、数据平台与 AI 决策系统,并结合主流云平台实践,构建从设备到 AI 的完整 AIoT 架构认知。

moton2017的博客 856

突破JUnit的局限

这篇文章将介绍JUnit如何利用Pisces来实现复杂测试。Pisces是一个开源项目,作为JUnit的扩展,它可以让你写出由一些JUnit测试组成的测试单元,每个测试单元可以以串行或并行的方式运行在一个远程主机上。Pisces可以让你构成、运行复杂场景,并在一个地点协调它们。 突破JUnit的局限作者:Amir Shevat07/13/2005翻译:tetsu版权声明:可以任意转载,转载时请

航海日志 578

PySpark机器学习生产化陷阱:跨节点依赖问题的7种解决方案

隐式依赖陷阱使用ldd解决方案:在基础镜像中预装和路径冲突终极解法依赖树瘦身技巧用conda-tree可减少40%环境体积PySpark机器学习生产化的核心矛盾在于分布式环境的确定性与灵活性不可兼得。轻量级方案(1-3)牺牲一致性换取灵活性重量级方案(4-6)牺牲灵活性换取确定性混合方案(7)针对特殊场景补充正如某AI平台架构师所言:“环境一致性不是技术问题,而是工程纪律问题选择适合团队当前阶段的方案,建立严格的依赖管理流程,才能让PySpark真正扛起生产环境的大旗。

datacanvas2426的博客 909

Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题

Git同步obsidian的保姆级教程和常见问题

weixin_44370439的博客 1万+

java重启太慢了_java – JUnit启动时间很慢

我正在开发一个相当小的项目(就依赖性而言),每当我运行单元测试时,JVM加载需要8秒钟,然​​后在0.2秒内运行实际测试.我的环境:> Java 8> Spring Tool Suite 3.8.1.RELEASE> JUnit 4> Windows 8我担心在我的环境中肯定会有这样的事情导致这种情况持续这么长时间,我希望有人之前已经看过这个问题并找到了问题的根源并且可能是...

weixin_42170064的博客 946

实战指南:在摩尔线程GPU上部署AI模型的完整流程

本文提供了一份详尽的实战指南,手把手教你如何在摩尔线程GPU上成功部署AI模型。内容涵盖从驱动安装、Docker环境配置,到核心的代码适配与模型运行全流程,并分享了性能调优技巧与常见避坑方法,旨在帮助开发者高效利用国产硬件进行AI应用开发。

weixin_29271263的博客 541

使用JUnit4测试Spring

Spring环境下的JUnit4测试 1,下载所需jar包: spring-test-3.2.0.RELEASE.jar junit-4.11.jar commons-dbcp-1.4.jar   2,配置Spring数据源: spring-dao-test.xml spring-service-test.xml 因为测试用例不是运行在Server环境下,不能通过JNDI取得数据

zhangzikui的专栏 5万+

瑞芯微RK3506开发板Ethercat主站性能优化实战:从内核配置到微秒级延迟控制

本文详细介绍了在瑞芯微RK3506开发板上实现EtherCAT主站微秒级延迟控制的实战优化方案。核心在于部署Preempt-RT实时内核,并进行深度系统调优,包括CPU隔离、中断亲和性设置、内存锁定及电源管理调整。通过绕过Linux网络栈的专用驱动加载与配置,最终实现了稳定的高性能实时控制,满足工业自动化需求。

tcp8optimizer的博客 315

基于51单片机语音识别智能台灯设计

智能台灯;语音识别;STC89C52RC单片机

Benso_H的博客 5842

Spring——整合junit4、junit5使用方法

Spring整合Junit4和Junit5使用方法

一起加油吧~ 2790

【系统架构设计师】模拟预测试卷十 - 案例分析(完整结构)

本文为系统架构设计师考试模拟试题及参考答案,包含五个专题:质量属性(必答)、信息系统架构设计、嵌入式系统架构设计、云原生架构设计、面向服务架构设计(SOA)。试题一聚焦非功能需求与质量属性映射,如性能、可修改性、一致性等;其余选答题分别涉及分层架构设计(如嵌入式实时控制)、云原生会话管理、服务化治理(如契约设计、熔断策略)等核心架构场景,涵盖战术应用、权衡分析及解决方案设计。参考答案提供关键要点,例如离线借还的冲突解决、服务编排与共享服务的区分、嵌入式硬实时保护的必要性等,适用于备考实战演练。

数据知道的博客 251

在 Spring 项目中使用 JUnit 测试

在 Spring 项目中使用 JUnit 测试

weixin_45428910的博客 1904

【GLM5】手把手教你在openclaw中白嫖英伟达羊毛

openclaw很强,但是也很贵,每一次请求都会消耗大量的token。而英伟达平台正好可以白嫖免费的模型,于是,我们一拍即合。

Science prince的博客 3820

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【Spring框架】单元测试:JUnit

单元测试:JUnit 在之前的测试方法中,几乎都能看到以下的两行代码: ApplicationContext context = new ClassPathXmlApplicationContext("xxx.xml"); Xxxx xxx = context.getBean(Xxxx.class); 这两行代码的作用是创建Spring容器,最终获取到对象,但是每次测试都需要重复编写。针对上述问题,我们需要的是程序能自动帮我们创建容器。我们都知道JUnit无法知晓我们是否使用了 Spring 框架,更不用

鱼干的博客 3720

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

spring项目中使用单元测试JUnit4

ssh框架中 ,由于bean实列都交给spring 管理,要做单元测试又不能一个个把所有实例都new一遍,junit4以及spring-test结合使用可以解决这个问题,如下: 1. 加入依赖包   使用Spring的测试框架需要加入以下依赖包: JUnit 4 spring-test Spring 相关其他依赖包(通常配置spring中需要的那些)

猴子哥哥的博客 4173

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

使用 JUnit 4在 Spring 中进行单元测试的完整步骤

加载 Spring 上下文,并使用 H2 内存数据库。加载 Spring 上下文,并通过。模拟 HTTP 请求(需手动配置)。在 DAO 层测试中,使用。确保测试后数据回滚。

yuren_xia的博客 1447

使用jUnit4测试Spring4

问题: 今天在使用spring框架做项目的时候发现一个问题: 自动注入@Autowired 在jUnit使用没有效果但是使用一般手动注入getBean的方法的时候是有效果的。 起先我以为是jUnit的中不能够自动注入Spring中的对象,折腾了一段时间在网上搜索解决方法,找到了一篇文章 http://blog.youkuaiyun.com/shunshoutuya/article/details/1795

h 2338

Spring如何使用junit进行单元测试

这篇文章主要介绍了Spring整合junit单元测试,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。 为什么需要单元测试? 在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保证这些方法产生的结果是我们想要的呢?当然了,最容易想到的一个方式,就是我们通过System.out来输出我们的结果,看看是不是满足我们的需求,但是项目中这些成千上万个方法,我们总不能在每一个方法中都去输出一遍嘛。这也太枯燥了。这时候用我们的单元测试框架junit就可以很好地

怪咖@的博客 3533

JUnit-Spring整合JUnit5、JUnit4

Spring整合JUnit使程序创建spring容器

2301_77193348的博客 828

如何使用Junit在Eclipse对Spring batch进行测试和调试

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

m0_38071159的博客 2945

maven中使用spring的test包结合junit4进行测试。

1.先在src/test/resources中加入spring的配置文件spring.xml 2.引入maven org.springframework spring-test test 3.进行测试。 package junit.test; import java.io.File; import java.io.FileInputStream; imp

czlpf的博客 1万+

Spring Test 整合 JUnit 4 使用总结

这两天做Web开发,发现通过Spring进行对象管理之后,做测试变得复杂了。因为所有的Bean都需要在applicationContext.xml中加载好,之后再通过@Resource去取得。如果每次都要整个业务流做的差不多了再去测试,这样效率很低,也很麻烦。如果单独去写一个测试用类,这样太繁琐了。于是想起Spring有一个测试框架,能够整合JUnit进行测试,于是便拿出来试试~1. 加入依赖包 

李君老师的BLOG 3432
上一篇: 谈谈Spring 2.x中简化配置的问题
下一篇: 5种DAO查询方法的签名方式,哪个更好?
quickselect
博客等级 码龄20年 1粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值