时间:2021-05-20
在过去的职业生涯里,我经常发现有些人不写测试代码,而他们声称不写的理由是无法轻易地写出覆盖多个不同模块的测试用例。好吧,我相信他们中的大部分要么是缺乏一些比较易掌握的技术手段,要么就是没时间来把它搞清楚,毕竟工作中总会有进度之类的各种压力。因为不知道该如何测试,所以就经常忽略集成测试,由此带来的问题就是越来越糟糕的软件、越来越多的BUG和更加失望的客户。所以我想分享一些个人的经验,揭开集成测试神秘的面纱。
如何对基于Spring的工程更好地进行集成测试
使用工具: Spring, JUnit, Mockito
想象有这样一个Spring工程,它集成了一些外部服务,例如,一些银行的web服务。那么,为这个工程写测试用例以及在持续集成系统中完成这些测试时所遇到的问题基本都差不多:
1.每次测试都会有交易进行,每次交易都需要付出金钱成本,这些成本最终由客户承担;
2.测试时发出的过多的请求有可能被认为是恶意请求,可能造成在银行的账户被封,后果是测试失败;
3.当使用非生产环境进行测试时,测试结果并不十分可靠,同样,后果是测试失败。
通常情况下,你对单个类进行测试的时候,问题很容易解决,因为你可以虚拟一些外部服务来供调用。但是当对整个巨大的业务流程进行测试的时候,意味你需要对多个部件进行测试,这时,需要你将这些部件都纳入到Spring容器中进行管理。所幸,Spring包含了非常优秀的测试框架,允许你将来自生产环境配置文件中的bean注入到测试环境中,但是对那些被调用的外部服务,需要我们自己去写模拟实现。一般人第一反应可能是在测试的setUp阶段对由Spring注入的bean进行重新注入(修改),但是这种方法需要再仔细考虑一下。
警告:通过这种方式,你的测试代码打破了容器自身的行为,所以没法保证在真实的环境中也如你测试的结果一样。
事实上,我们无需先实现模拟类然后再把它重新注入到所需的bean中,我们可以让Spring帮助我们一开始就注入模拟类。让我们用代码演示一下。
示例工程包含一个名为BankService的类,代表调用的外部服务,一个名为UserBalanceService的类,它会调用BankService。UserBalanceService实现的非常简单,仅仅完成将余额从String向Double类型的转换。
BankService.java的源码:
BankServiceImpl.java的源码:
UserBalanceService.java的源码:
UserBalanceServiceImpl.java的源码:
然后是Spring的XML配置文件,添加所需要的bean声明。
applicationContext.xml的源代码:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言:solr和spring整合其实很简单,只要注意导入依赖的配置文件即可。废话不多说,上代码。第一步:编写maven项目的pom文件,导入依赖
耳麦跟朋友通话的时候,朋友说听不见,这是为什么?怎样测试是否正常?在windows下测试麦克风其实很简单。我们可以使用windows自带的录音机来进行测试,下面
SpringBoot简介spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西。因此就有了SpringBoot框架,它的作用很简单,就是帮
用WaitiN写了个简单的login自动化测试,能够使用少量的代码实现批量账号的login测试很简单的,代码如下:复制代码代码如下:usingSystem;us
SpringBoot依赖使用SpringBoot很简单,先添加基础依赖包,有以下两种方式1.继承spring-boot-starter-parent项目org.