第1集 公司⾥⾯软件开发测试流程你知道多少
简介:讲解公司⾥⾯软件开发测试
需求分析
->
设计
->
开发
->
测试
->
上线
测试⾥⾯的种类
- 单元测试
完成最⼩的软件设计单元的验证⼯作,⽬标是确保模块被正确的编码
- ⿊盒测试
不考虑内部结构,主要测试功能⼗分满⾜需求
- ⽩盒测试
针对代码级别,测试开发⼯程师⼀般具备⽩盒测试能⼒,针对程序内部的逻辑结构进⾏
代码级别的测试
- 回归测试
对原先提出的缺陷进⾏⼆次验证,开发⼈员修复后进⾏⼆次的验证
- 集成测试
测试模块和模块之间的整合,且测试主要的业务功能
- 系统测试
针对整个产品系统进⾏的测试,验证系统是否满⾜产品业务需求
第2集 在线教育项⽬⾥⾯怎么⽤SpringBoot2.x的单元测试
简介:讲解项⽬⾥⾯怎么使⽤SpringBoot2.x的单元测试
- 引⼊相关依赖
<!--springboot 程序测试依赖,如果是⾃动创建项⽬默认添加 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>
- 配置相关注解
@RunWith(SpringRunner.class) //底层⽤junit SpringJUnit4ClassRunner
@SpringBootTest(classes={XdclassApplication.class})//启动整个springboot⼯程
public class SpringBootTests { }
常⽤单元测试的注解
- @before
- @Test
- @After
断⾔
- 判断程序结果是否符合预期 TestCase.assertXXX (例如:如果该方法是assertEquals两个参数相等,程序就通过)
本章代码块例子:
@RunWith(SpringRunner.class) //SpringRunner继承了SpringJUnit4ClassRunner
//扫描启动项目位置
@SpringBootTest(classes = {DemoProjectApplication.class})
public class SelectListVideoTest {
//测试执行之前打印
@Before
public void befo(){
System.out.println("测试执行之前");
}
@Test
public void TestOne(){
System.out.println("这是一个测试类");
TestCase.assertEquals(1,1); //断言
}
@After
public void after(){ //这个方法,当测试类抛异常After依然会执行
System.out.println("测试执行之后");
}
}
第3集 案例实战单元测试调⽤Controller-Service层接⼝
简介:讲解Springboot单元测试Controller-Service层接⼝
- 案例实战 Controller层登录⽅法测试
UserTest:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {DemoProjectApplication.class})
public class UserTest {
UserControll userControll = new UserControll();
@Test
public void LoginTest(){ //
//1.创建个User对象
User user = new User("xiaoliu", "123456");
JsonData jsonData = userControll.Loging(user);
//使用断言,查看code是否和逾期一样
TestCase.assertEquals(0,jsonData.getCode());
}
}
- 案例实战 视频列表Service层单元测试
@RunWith(SpringRunner.class) //SpringRunner继承了SpringJUnit4ClassRunner
//扫描启动项目位置
@SpringBootTest(classes = {DemoProjectApplication.class})
public class SelectListVideoTest {
//测试执行之前打印
@Before
public void befo(){
System.out.println("测试执行之前");
}
@Autowired
private VideoService videoService;
//查看所有视频
@Test
public void selectVideoList(){
List<Video> videoList = (List<Video>)videoService.GetVideoList();
TestCase.assertTrue(videoList.size()>0); //如果没有大于0 说明没有值断言报错
}
@Test
public void TestOne(){
System.out.println("这是一个测试类");
TestCase.assertEquals(1,1); //断言
}
@After
public void after(){ //这个方法,当测试类抛异常After依然会执行
System.out.println("测试执行之后");
}
}
第4集 MockMvc案例实战调⽤Controller层API接⼝
简介:讲解
Springboot
的
MockMvc
调⽤
api
层接⼝
如何测试
Controller
对外提供的接⼝
- 增加类注解 @AutoConfifigureMockMvc
- 注⼊⼀个MockMvc类
- 相关API :
- perform执⾏⼀个RequestBuilder请求
- andExpect:添加ResultMatcher->MockMvcResultMatchers验证规则
- andReturn:最后返回相应的MvcResult->Response
- 案例:在线教育VideoController 视频列表接⼝ 单元测试
@Autowired
private MockMvc mockMvc;
@Test
public void testVideoListApi() throws Exception{
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/api/v1/pub/video/GetVideoList"))
.andExpect(MockMvcResultMatchers.status().isOk()) //验证规则,是否为200
.andReturn();
MockHttpServletResponse response = mvcResult.getResponse();
int status = response.getStatus();
System.out.println("状态为:"+status);
//设置编码
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
String contentAsString = response.getContentAsString(); //获取Api返回的值
System.out.println("获取Api返回的值:"+contentAsString);
}