单元测试 @mock与@SpringBootTest的使用
程序员文章站
2022-03-07 12:25:24
目录二.springboot使用@springboottest单元测试三.mock和@springboottest区别2.@springboottest需要启动服务单元测试--springbootte...
在写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖的类或者资源又会有依赖,导致在单元测试代码里无法完成构建,我们应对的方法是mock。
简单的说就是模拟这些需要构建的类或者资源,提供给需要测试的对象使用。
一.单元测试工具mock使用
1.引入依赖包
2.mock测试类
二.springboot使用@springboottest单元测试
1.引入依赖包
2.测试类
三.mock和@springboottest区别
1.mock进行单元测试不依赖spring的bean定义文件
不需要启动web服务,执行起来速度很快。
2.@springboottest需要启动服务
执行真正的操作,执行速度慢,当需要真正的dao层操作时可选此测试方式。
单元测试--springboottest和mockmvc
springboottest
基于junit 的test
import junit.framework.testcase; import org.junit.assert; import org.junit.test; import org.junit.runner.runwith; import org.springframework.boot.test.context.springboottest; import org.springframework.test.context.junit4.springrunner; @runwith(springrunner.class) //底层用junit的 springjunit4classrunner @springboottest(classes = {xdclassspringbootapplication.class}) public class xdclassspringbootapplicationtests { @test public void testone() { system.out.println("start test"); assert.assertequals(1,1); testcase.assertequals(1,2); } }
当然也可以使用 @before 和 @after , 和 junit 的测试一样。
启动类是必须要有的。
当有多个 @test 的方法,需要一起执行的时候, 执行 xdclassspringbootapplicationtests 这个类的 run或debug。
assert 和 testcase 都是 断言,用法一样。
mockmvc类的使用和模拟http请求
相关api:
-
perform
:执行一个requestbuilder请求 -
andexpect
:添加resultmatcher->mockmvcresultmatchers验证规则 -
andreturn
:最后返回相应的mvcresult->response
import org.junit.test; import org.junit.runner.runwith; import org.springframework.beans.factory.annotation.autowired; import org.springframework.boot.test.autoconfigure.web.servlet.autoconfiguremockmvc; import org.springframework.boot.test.context.springboottest; import org.springframework.test.context.junit4.springrunner; import org.springframework.test.web.servlet.mockmvc; import org.springframework.test.web.servlet.mvcresult; import org.springframework.test.web.servlet.request.mockmvcrequestbuilders; import org.springframework.test.web.servlet.result.mockmvcresultmatchers; @runwith(springrunner.class) @springboottest @autoconfiguremockmvc public class mockmvctestdemo { @autowired private mockmvc mockmvc; @test public void apitest(){ try { mvcresult mvcresult = mockmvc.perform(mockmvcrequestbuilders.get("/hello")) .andexpect(mockmvcresultmatchers.status().isok()) .andreturn(); } catch (exception e) { e.printstacktrace(); } } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
上一篇: Python初学者第三天
推荐阅读
-
谷歌浏览器(chrome)的免费插件时空隧道安装与使用图文教程
-
springboot Mongodb的集成与使用实例详解
-
深入理解Android Matrix理论与使用的详解
-
Android开发使用json实现服务器与客户端数据的交互功能示例
-
Python3.5基础之NumPy模块的使用图文与实例详解
-
使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法
-
ubuntu中snap包的安装、更新删除与简单使用
-
C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)
-
使用Visual Studio的查找与替换替代默认的系统搜索
-
UG钣金模式中的伸直与重新折弯命令怎么使用?