Spring Boot单元测试(Mock)

Spring Boot单元测试(Mock)

Java个人学习心得 2017-0八-12 1陆:07

图片 1

Mock

单元测试的要害就不多说了,笔者那边的工程1般都以Spring
Boot+Mybatis(实际情况可参照《Spring
boot+MyBatis+PageHelper+JSON
》),现在写一下Spring
Boot下怎么测试Controller、Service。

Controller测试

正文就总结一点,写一个Hello接口。

图片 2

Controller

HTTP请求测试:

既然是测试Controller接口,肯定正是出殡和埋葬HTTP请求了,在此之前的篇章笔者也有关系,可以选拔Postman、Swagger进行测试,本文大家使用编码的方式测试,新建HttpRequestTest类:

图片 3

HTTP测试类

注意四个红框,那是报告Spring
Boot运行的时候利用2个私下的端口,有助于在测试环境中制止争论(官方网址解释)。

绿框的restTemplate,看过从前笔者的《Spring
Cloud网关与负载均衡Zuul与Ribbon
》就掌握,与RestTemplate大约,那就是个HTTP客户端。

运营测试通过。注意看日志,会找到一行日志:

Tomcat started on port(s):XXXXX

这表达全体汤姆cat已经起步成功了。

MockMVC测试:

专注上面包车型大巴测试,通过日记我们知晓,其实就是运行了汤姆cat,然后经过TestRestTemplate营造了HTTP请求。然则在大家其实支出中,有三个切实可行的难题,大家2个工程会有过多的Controller、Service、Mapper,然则咱们这一次测试大概就测二个接口。为了一个接口,要开动全套汤姆cat,太浪费了。所以大家得以行使MockMVC,在不运转的服务的事态下,测试接口:

图片 4

Mock测试

实在支出中,料定会有那三个Controller,红框内我们钦赐此番测试只实例化HellController那四个。

另外在付出的时候,Eclipse没办法通过急忙键实行import
static,所以大家要手工业导入以下:

图片 5

导入

运作本测试,注意看日志,就不会产出汤姆cat started on
port(s):XXXXX的笔录了。

Service测试

在骨子里支付中,Service的逻辑处理相比多,应该是首先被测试的,本示例扩张一个Service和Mapper,如下:

图片 6

Mapper

在自小编事先十三分完整的工程中,这几个申明应该是@Mapper,本例小编没引进数据库,只是模仿一下,所以用了@Repository。图片 7

Service

在@Service下应该还有工作声明@Transactional,本例只是模拟,所以也从不加。

测试类如下:

图片 8

测试类

在意红框,在骨子里开采中,大家有福同享写的Controller、Service很或者去调用别的同事或别的项目组写的Service、Mapper,对方或者只写了四个接口,未有兑现(比如本例中自我写的Mapper),那样是不得已张开测试的。

Mock的成效就是开创三个虚拟的目的替代那个不易构造或不利获取的靶子。

本例中自小编都不曾引入数据库的有关注重,本来应该是延续数据库的Mapper,今后正是二个唯有的接口,假若不对Mapper进行拍卖,那么些测试就无奈展开下去。

于是乎在率先个红框内Mock了三个HelloMapper,第二个红框对这几个Mock对象的主意开始展览了处理,等于Mapper接收参数“leo”,再次回到结果“Hello
leo”,给Service使用。

运维测试通过。

Controller测试(含Service)

在“MockMVC测试”壹节中,大家只测了Controller里的3个办法,没有引入Service,那在实际上中国人民解放军海军事工业程高校业作中是不容许的,大家照旧引入本身写的Service,要么引进别的同事写的Service(接口情势),假诺此时引进的Service同样未有落到实处,那测试也迫于做下来。结合“Service测试”的内容,我们得以这么做:

图片 9

Controller

Controller新扩展1个艺术,调用了Service。

图片 10

测试类

测试类扩充如上代码,Mock2个假的Service,用when来拍卖Service,用MockMVC模拟HTTP请求,测试通过。

网站地图xml地图