使用Spock 1.2简化对遗留应用程序的集成测试

了解如何利用Spock 1.2切片传统应用程序的Spring上下文,编写集成测试。

您是否曾经想过,要开始使用一些遗留应用程序,编写一些测试以了解正在发生的事情,并可能收到有关回归的通知? 当您想实例化单个类时,这种感觉会因NullPointerException而失败。 6替换(有困难)依赖项之后,您以前从未听说过的类仍然存在一些错误。 听起来很熟悉?

有多种技术可以处理隐藏的依赖项。 有整本专门的书(可能还有几本我还没读过)。 有时,从集成测试开始并执行某些过程可能是可行的。 即使只是在我们的情况下完全不需要,查看仅设置上下文所需的奇特组件可能更为“有趣”。 谢谢(太宽和粗心使用) @ComponentScan :)。

在测试环境中注入存根/模拟是一种作为紧急援助的方式(请参阅最后一段,有更好但更难的方法)。 对于想要在其上进行切割的每个依赖项(或实例化的每个不需要的bean),可以使用带有@Primary批注的额外bean定义(通常是在进行此操作之前要三思而后行)的“ bean”定义来“手动”实现。顺便说说)。 @MockBean放在测试中的某个字段上更方便,但是仍然需要在我们的测试中定义一个字段并在其上添加注释(5?10?15 bean?)。 Spock 1.2引入了一些@StubBeans功能, @StubBeans在这里可能有用。

Spock 1.2

它可以用来简单地提供一个类列表,这些类(可能)应在Spring测试上下文中用存根替换。 当然,在实例化实际对象之前(例如,防止在构造函数中使用NPE)。 多亏了这几行存根/模拟注入:

@RunWith(SpringRunner.class) //Spring Boot + Mockito
@SpringBootTest //possibly some Spring configuration with @ComponentScan is imported in this legacy application
public class BasicPathReportGeneratorInLegacyApplicationITTest { //usual approach@MockBeanprivate KafkaClient kafkaClientMock;@MockBeanprivate FancySelfieEnhancer fancySelfieEnhancerMock;@MockBeanprivate FastTwitterSubscriber fastTwitterSubscriberMock;@MockBeanprivate WaterCoolerWaterLevelAterter waterCoolerWaterLevelAterterMock;@MockBeanprivate NsaSilentNotifier nsaSilentNotifierMock;//a few more - remember, this is legacy application, genuine since 1999 ;)//...@Autowiredprivate ReportGenerator reportGenerator;@Testpublic void shouldGenerateEmptyReportForEmptyInputData() {...}
}

可以只替换为一(长)行:

@SpringBootTest //possibly some Spring configuration with @ComponentScan is imported in this legacy application
@StubBeans([KafkaClient, FancySelfieEnhancer, FastTwitterSubscriber, WaterCoolerWaterLevelAterter, NsaSilentNotifier/(, ... */])//all classes of real beans which should be replaced with stubs
class BasicPathReportGeneratorInLegacyApplicationITSpec extends Specification {@Autowiredprivate ReportGenerator reportGeneratordef "should generate empty report for empty input data"() {....}
}

(使用Spock 1.2-RC2测试)

值得一提的是@StubBeans仅用于提供占位符。 在某种情况下,需要提供存根和/或调用验证@SpringBean@SpringSpy (在Spock 1.2中也引入了)更好。 我在以前的博客文章中写了更多有关它的内容 。

有一个重要方面要强调@StubBeans在我们有一些“遗留”项目并希望快速开始编写集成回归测试以查看结果的情况下很方便使用。 但是,正如我的一位同事DarekKaczyński的总结所概括的那样,盲目更换在测试中“爆炸”的豆仅仅是“扫除地毯下的问题”。 在初始阶段之后,当我们开始了解正在发生的事情时,是重新考虑在生产环境和测试环境中创建上下文的好时机。 已经提到过的@ComponentScan太宽泛,通常是万恶之源。 设置部分上下文并将其放在一起(如果需要)的能力是一个很好的起点。 使用@Profile或条件Bean是测试中非常强大的机制(不仅限于此)。 @TestConfiguration和适当的bean选择以改善上下文缓存是值得牢记的。 但是,我从本文开始介绍了Spock中的新机制,该机制在某些情况下可能会有用,并且我想使其简短。 在集成测试中可能还有另一篇更通用的博客文章,关于管理Spring上下文。 我必须认真对待它:)。

翻译自: https://www.javacodegeeks.com/2018/09/integration-testing-legacy-application-spock-1-2.html

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

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

相关文章

Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全

切记:以上方法均会对注册表进行修改,一定要先备份整个注册表,以防万一,避免导致系统错误 一、问题症状或错误复现: 1、首先要打开 文件资源管理器的 文件 预览窗格 2、然后在文件资源管理器的右边就会显示预览窗格…

【渝粤题库】广东开放大学 建筑材料 形成性考核 (2)

选择题 题目:材料吸水后,将使材料的( )提高 题目:水附于憎水性(或疏水性)材料表面上时,其润湿边角为( ) 题目:某块体质量吸水率为18%,…

vue快速修改数组的某个值_详解vue组件三大核心概念

前言本文主要介绍属性、事件和插槽这三个vue基础概念、使用方法及其容易被忽略的一些重要细节。如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能。本文的代码请猛戳github博客,纸上得来终觉浅&…

“有源传感器”和“无源传感器”

什么是“有源传感器”和“无源传感器”? 有源传感器 将非电能量转化为电能量,只转化能量本身,并不转化能量信号的传感器,称为有源传感器。也称为能量转换性传感器或换能器。 常常配合有电压测量电路和放大器,如压电式,热电式,磁…

【渝粤题库】广东开放大学 汉语基础 形成性考核

选择题 题目: 普通话里,“迂”、“衣”、“乌”的不同,主要是( )的不同。 选择一项: 题目: 普通话里,短语“一朵鲜花儿”的读音包含( )个音节。 题目&…

根据id获取多维数组路径_程序员的进阶课-架构师之路(2)-数组

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/m0_37609579/article/details/99355842 从这一节开始,我们就要正式进去数据结构的世界了…

【渝粤题库】广东开放大学 组织行为学 形成性考核

选择题 题目:()人的特征是:智慧敏捷,缺乏准确性;热情,但急躁易冲动;刚强,但易粗暴。 题目:知觉是人脑对直接作用于感觉器官的客观事物个别属性的反映。 题目:组织也叫社会…

机理与机制的含义与区别

机理 机理(mechanism),是指事物变化的理由与道理,从机理的概念分析,机理包括形成要素和形成要素之间的关系两个方面。其原理是指为实现某一特定功能,一定的系统结构中各要素的内在工作方式以及诸要素在一定…

guava和commons_使用Guava CharMatcher和Apache Commons Lang StringUtils确定字符串中字符或整数的存在...

guava和commons最近Reddit上的帖子提出了一个问题:“ 是否存在一种预定义的方法来检查变量值是否包含特定字符或整数? ”基于问题的标题也被以另一种方式问到,“一种检查变量是否包含诸如列表之类的数字的方法或快速方法,例如或&a…

【渝粤题库】广东开放大学 财务会计(1) 形成性考核

选择题 题目:2012年12月初,某企业“坏账准备”科目贷方余额为6万元。12月31日,“应收账款”科目借方余额为100万元,经减值测试,该企业应收账款预计未来现金流量现值为95万元。该企业2012年末应计提的坏账准备金额为( …

python怎么把数据写进txt_python 如何将数据写入本地txt文本文件的实现方法

一、读写txt文件 1、打开txt文件 file_handle=open(1.txt,mode=w) 上述函数参数有(1.文件名,mode模式) mode模式有以下几种: #w 只能操作写入 r 只能读取 a 向文件追加 #w+ 可读可写 r+可读可写 a+可读可追加 #wb+写入进制数据 #w模式打开文件,如果而文件中有数据,再次写入…

工业互联网设备的网络安全管理与防护研究

从国家层面完善工业互联网设备的网络安全准入机制,建立设备网络安全检测认证体系,促进设备的网络安全架构研究和工程应用,强化设备的网络安全风险监测感知。 一、前言 工业互联网是新一代信息通信技术与工业体系融合的产物,做好…

反应式服务中的线程本地状态可用性

任何体系结构决策都需要权衡。 如果您决定采用反应式,也没有什么不同,例如,一方面使用反应式流实现几乎可以立即获得更好的资源利用率,但另一方面会使调试更加困难。 引入反应式库也对您的域产生巨大影响,您的域将不再…

【渝粤题库】陕西师范大学100101美学概论作业(高起本)

《美学概论》作业 一、写出下列美学著作的作者 1.《文艺对话集》 2.《Aesthetik》 3.《论语》 4.《文心雕龙》 5.《人间词话》 6.《美的历程》 7.《生活与美学》 8.《1844年经济学—哲学手稿》 9.《审美教育书简》 10.《判断力批判》 11.美是主客观的统一 12.美在和谐 13.美是…

【渝粤题库】陕西师范大学151205 财务管理原理作业(笔试题型)

《财务管理原理(专升本)》作业 一、单项选择题 1、融资租赁又称财务租赁,有时也称资本租赁。下列( )情形不属于融资租赁范围。 A、根据协议,企业将某项资产卖给出租人,再将其租回使用 B、由租赁…

自定义条件查询_数据查询不止有vlookup函数,自定义zlookup函数查询操作更高效...

Excel数据查询,相信大家首先会想到vlookup函数。毋庸置疑vlookup函数在Excel数据查询中作用是非常的强大。但是它也有一些不能实现的数据查询。如上图所示,我们需要根据人员的出现次数,提取第N次的数据。这里vlookup函数就无法使用&#xff0…

2021年中国工业互联网行业发展现状分析,“5G+工业互联网”驱动行业快速发展

一、概述 工业互联网是新一代信息通信技术与工业经济深度融合的新型基础设施、应用模式和工业生态,通过对人、机、物、系统等的全面连接,构建起覆盖全产业链、全价值链的全新制造和服务体系,为工业乃至产业数字化、网络化、智能化发展提供了…

【渝粤题库】陕西师范大学152212 政府绩效管理 作业(专升本)

陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 陕西师范大学 内 部 题 库 教育 (yuyueshool) 编制 《政府绩效管理》作业 一、单选题 1.( )是指公共服务部门将公共服务的内容、标准、程序和责任等公…

针对数能同传SWIPT的个人理解与总结Part1

无线数能同传(Simultaneous Wireless Information and Power Transfer, SWIPT)技术是指利用无线射频信号可同时携载信息与能量的特点,从一个射频信号中同时接收信息与能量的技术。 一、接收机架构 SWIPT有很多种解释,携能通信、…

【渝粤题库】陕西师范大学164111 Java及JSP动态网页编程与应用 作业 (高起专)

《JAVA与JSP动态网页编程与应用》作业 一、单选题 1.以下哪项都是关键字( ) A.package privati protect throw B. false final finally float C. this threadsafe super thread D. abstract bool break main 2.以下哪种循环体能保证进入执行&…