spring boot 测试用例
junit 是一个面向于研发人员使用的轻量的测试模块,适合做单元测试。而testng百度后发现更强大,可以做功能测试,但对于我这种RD,貌似junit足沟了呢!
java Mock PowerMock、jmockit 模拟包非常优秀,我目前选型学会一个就不错了,不做评价,我学的powermock,据说jmockit更强大。但是powermock貌似继承了旧的easymock和jmock,所以用的人比较大(个人理解)。
对于junit测试的几个注解
@RunWith
@Before
@Test
@After
powerMock注解
@Mock
@InjectMocks
@RunWith 表示运行方式,@RunWith(JUnit4TestRunner)、@RunWith(SpringRunner.class),@RunWith(PowerMockRunner.class) 三种运行方式,分别在不同的场景中使用。
@Before是 @Test运行之前调用的方法,可以做初始化操作
@Test 是测试用例的单元
@After 执行完测试用例需要执行的清理工作
@Mock 有点类似Autowired注解,而@Mock注解是自动实现模拟对象,而并非Bean实例创建
@InjectMocks 实现对@Mock注解的对象注入到当前对象中,通过MockitoAnnotations.initMocks(this);实现
package aa; import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.modules.junit4.PowerMockRunnerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
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.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext; import static org.mockito.Matchers.any;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @RunWith(PowerMockRunner.class)
@SpringBootTest(classes = MainApplication.class)
@PowerMockRunnerDelegate(SpringRunner.class)
@PowerMockIgnore("javax.management.*")
public class moreTest { @Mock
TService tService;
@InjectMocks
TController controller;
@Autowired
private WebApplicationContext ctx;
private MockMvc mvc; @Before
public void before() throws Exception { MockitoAnnotations.initMocks(this);
//如果简单mock一个请求可以使用这个,但是要模拟注入,还是按下面的方式实现controller比较好
// mvc = MockMvcBuilders.webAppContextSetup(ctx).build();
mvc = MockMvcBuilders.standaloneSetup(controller).build();
// taskPackageService=PowerMockito.mock(TService);
PowerMockito.when(tService.queryMethod(any(ParameClass.class)))
.thenReturn(88);
PowerMockito.whenNew(TService.class).withNoArguments().thenReturn(tService);
} @Test
public void searchTest() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/welcome").header("User-Agent", "xx")
.param("page", "1")
).andExpect(status().isOk()).andDo((MvcResult result) -> {
System.out.println(result.getResponse().getContentAsString());
});
} }
spring boot 测试用例的更多相关文章
- Spring Boot 知识图谱
最近有意重新学习下SpringBoot知识,特地总结了SpringBoot的知识点,对于想要学习的人来说,够用. SpringBoot学习路径 第一部分:了解 Spring Boot Spring B ...
- Spring Boot的一个测试用例
package tk.mybatis.springboot.mapper; import org.junit.Assert; import org.junit.Test; import org.jun ...
- Spring Boot中的事务管理
原文 http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...
- Spring Boot 乐观锁加锁失败 - 使用AOP恢复错误
之前写了一些辅助工作相关的Spring Boot怎么使用AOP.这里继续正题,怎么减少Spring Boot 乐观锁加锁报错的情况(基本可以解决). 1. 包依赖 spring-boot-starte ...
- Spring Boot文档阅读
原因之初 最初习惯百度各种博客教程,然后跟着操作,因为觉得跟着别人走过的路走可以少走很多弯路,省时间.然而,很多博客的内容并不够完整,甚至错误,看多了的博客甚至有千篇一律的感觉.此外,博客毕竟是记载博 ...
- 用Gradle构建Spring Boot项目
相比起Maven的XML配置方式,Gradle提供了一套简明的DSL用于构建Java项目,使我们就像编写程序一样编写项目构建脚本.本文将从无到有创建一个用Gradle构建的Spring Boot项目, ...
- Spring Boot 学习笔记
参考资料 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ Spring Boot简介 Spring Boot使 ...
- springboot(十一):Spring boot中mongodb的使用
mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多.由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置 ...
- Spring Boot快速入门(三):依赖注入
原文地址:https://lierabbit.cn/articles/6 spring boot使用依赖注入的方式很简单,只需要给添加相应的注解即可 @Service用于标注业务层组件 @Contro ...
随机推荐
- MT【116】三个点动起来
评:当若干个变量时抓住主变量,立体几何问题平面化.
- 【比赛】NOIP2017 小凯的疑惑
找规律:ans=a*b-a-b 证明:(可见 体系知识) gcd(A, B) = 1 → lcm(A, B) = AB 剩余类,把所有整数划分成m个等价类,每个等价类由相互同余的整数组成 任何数分成m ...
- Jenkins(三)---Jenkins初始配置和插件配置
从Jenkins(二)中可以知道 jenkins 的工作目录为/opt/jenkins [很重要!!!][很重要!!!][很重要!!!]在配置此目录以前,将这两台的主机进行配置为ssh root用户无 ...
- OpenJudge1001Exponentiation
问题描述 Problems involving the computation of exact values of very large magnitude and precision are co ...
- Python面向对象补充以及异常处理
面向对象相关内容 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(o ...
- 微信图片上传,遇到一个神奇的jgp
微信图片上传,获取图片base64遇到一个神奇的 jgp var imgFn = function (event) { event.preventDefault(); var id = '#'+$ ...
- 基本UDP套接字编程
概述 使用TCP编写的应用程序和使用UDP编写的应用程序之间存在一些本质差异,其原因在于这两个传输层之间的差别:UDP是无连接不可靠的数据报协议,非常不同于TCP提供的面向连接的可靠字节流.然而相比T ...
- vsCode开发java遇到的问题整理、解决方案(持续更新)
获取控制台输入的信息: 休息launch.json文件中的console属性internalConsole(内部控制台)修改为externalTerminal(外部控制台)即可正常获取输入信息,代码如 ...
- RTSP服务器之————rtsp-server(轻量级RTSP / RTP流媒体服务器)
github:https://github.com/revmischa/rtsp-server 轻量级RTSP / RTP流媒体服务器
- Windows Azure: Service Bus Relay
Service Host: using System; using System.Collections.Generic; using System.Linq; using System.Text; ...