spring boot test MockBean
使用spring boot , MockBean
1 @RunWith(SpringRunner.class)
2 @SpringBootTest(classes = Application.class)
3 public class DalListTest {
4
5 @MockBean
6 private XxxService xxxService;
7
8 }
classes指定主程序的入口
@MockBean可以在代替实际的Bean, 用来解决一些初始化问题, 比如用例启动不了。不需要在测试类中使用@Configuration, @Bean
默认查找bean的package和主程序入口package相同
mock maven依赖
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
</dependency>
@SpringBootTest是用在集成测试阶段的,单元测试中不要用这个, 而且单元测试的代码需要和集成测试的代码分开
TDD实践中是先做单元测试,然后实现代码, 再做集成测试 单元测试 是先建立验证目标, 然后实现具体代码。
单元测试时 只需要@RunWith(SpringRunner.class),不要@SpringBootTest
比如只验证controller时, service层的bean是mock打桩, 配合@WebMvcTest就够了
只验证service时, 使用@RunasJunit就行, mock mapper bean
只验证orm时, 使用@JdbcTest,要导入MybatisAutoConfig, 默认不会自动加载autoConfig类。
此时也是要初始化DataSource, sqlSessionFactory ..., 只不过@JdbcTest帮我们初始化了,不用再手动new相关对象
@JdbcTest会自动使用h2数据库, 如果想使用xml中的jdbc路径,需要修改配置spring.test.database.replace=none, springboot1,2版本稍有区别
@ActiveProfiles("test,local")
@RunWith(SpringRunner.class)
@ImportAutoConfiguration(classes = {MybatisPlusAutoConfiguration.class, JdbcTemplateAutoConfiguration.class})
@JdbcTest
@WebAppConfiguration
public class ApiAddressDaoTest {
@Autowired
private ApiAddressDao apiAddressDao;
@Autowired
private JdbcTemplate jdbcTemplate;
@Test
public void test_queryList() {
// 打桩 如果使用entityManager 会自动创建表
jdbcTemplate.execute("create table ns_address (id int null, user_id int)");
jdbcTemplate.execute("insert into ns_address values(11, 156)");
// 验证
List<AddressVo> addressVos = apiAddressDao.listAddress(156L);
assertThat(addressVos).isNotEmpty();
}
}
https://www.baeldung.com/spring-boot-testing
https://github.com/mbhave/tdd-with-spring-boot @TestPropertySource(xxx.properties) 会覆盖application.properties中的配置
单元测试的优点和价值:
1. 基准测试, 有对比, 可验证,建立修改的信心
2. 文档作用
3. 可重用 速度快 不用每次都找前端要参数
spring boot test MockBean的更多相关文章
- spring /spring boot中mock
1 Mockito简介 1.1 Mockito是什么 Mockito是一个简单的流行的Mock框架.它允许你创建和配置mock对象.使用Mockito可以明显的简化对外部依赖的测试类的开发.一般使 ...
- 40. Testing Prev Part IV. Spring Boot features
40. Testing Spring Boot provides a number of utilities and annotations to help when testing your app ...
- Spring Boot 1.4测试的改进
对Pivotal团队来说,工作上的好事情是他们拥有一个被叫做Pivotal Labs的灵活发展部门,拥有Labs团队的Lean 和 XP程序设计方法学的强大支持,例如结对编程和测试驱动开发.他们对于测 ...
- 详细介绍Spring Boot 2.0的那些新特性与增强
以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...
- Spring Boot 2.x 编写 RESTful API (五) 单元测试
用Spring Boot编写RESTful API 学习笔记 概念 驱动模块 被测模块 桩模块 替代尚未开发完毕的子模块 替代对环境依赖较大的子模块 (例如数据访问层) 示例 测试 Service @ ...
- Spring Boot 2.0 新特性和发展方向
以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...
- 学习 Spring Boot:(二十九)Spring Boot Junit 单元测试
前言 JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量. JUnit 测试框架具有以下重要特性: 测试工具 测试套件 测试运行器 测试分类 了 ...
- 【2.0新特性】Spring Boot 2.0新特性
以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...
- Spring Boot 2 实践记录之 封装依赖及尽可能不创建静态方法以避免在 Service 和 Controller 的单元测试中使用 Powermock
在前面的文章中(Spring Boot 2 实践记录之 Powermock 和 SpringBootTest)提到了使用 Powermock 结合 SpringBootTest.WebMvcTest ...
随机推荐
- bzoj 2460: 元素 线性基
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=2460 题解: RT 线性基裸题 #include <cstdio> #inc ...
- javascript之原型prototype
理解JavaScript原型 http://blog.jobbole.com/9648/ Web程序员应该知道的Javascript prototype原理 http://www.leonzhang. ...
- 洛谷 4149 [IOI2011]Race——点分治
题目:https://www.luogu.org/problemnew/show/P4149 第一道点分治! 点分治大约是每次找重心,以重心为根做一遍树形dp:然后对于该根的每个孩子,递归下去.递归之 ...
- Velocity常用标签的讲解
Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象. 当Veloci ...
- HTTP 协议入门(转载)
作者:阮一峰 (@ruanyf) www.ruanyifeng.com/blog/2016/08/http.html HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 ...
- SharePoint Project Server List 列表CURD操作使用rest api接口
//#region 界面交互代码 var issuesUtils = issuesUtils || {}; (function () { /** * 点击问题提处理方案按钮事件 */ issuesUt ...
- python 基础 列表 增删改查
names = ["aaron", "alex", "james", "meihengfan"]names2 = [1, ...
- 10个C语言经典
1.计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.C语言实现的代码如下: /* t3ing Fibonac ...
- Springboot ResponseEntity IE无法正常下载文件
项目在google浏览器下都很nice了,但当测试到IE的时候开始出现各种问题. 项目是前端js通过URL传参fileName到后台解析返回ResponseEntity 前端代码如下: window. ...
- 9、par画图参数
转载:http://blog.sina.com.cn/s/blog_8f5b2a2e0102v0tf.html 1. 函数par()的使用格式如下: par(..., no.readonly = FA ...
