讲解SpringBoot的单元测试
1、引入相关依赖
<!--springboot程序测试依赖,如果是自动创建项目默认添加-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2、使用
package xdclass_springboot.demo;
import junit.framework.TestCase;
import net.xdclass.demo.DemoApplication;
import org.junit.After;
import org.junit.Before;
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={DemoApplication .class})//启动整个springboot工程
public class SpringBootTestDemo {
@Test
public void testOne(){
System.out.println("test hello");
TestCase.assertEquals(1,1);
//断言类是Assert.java,里面有多个静态方法被称为硬断言,硬断言就是,如果运行到折行断言失败,即使该用例,后面还有其他代码行,也不会继续执行下去
}
@Test
public void testTwo(){
System.out.println("test hello");
TestCase.assertEquals(1,0);
}
@Before
public void testBefore(){
System.out.println("test Before");
}
@After
public void testAfter(){
System.out.println("test After");
}
}
讲解MockMvc类的使用和模拟Http请求实战
对于前后端分离的项目而言,无法直接从前端静态代码中测试接口的正确性,因此可以通过MockMVC
来模拟HTTP请求。基于RESTful风格
的SpringMVC
的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。
1、增加类注解 @AutoConfigureMockMvc
@SpringBootTest(classes={XdclassApplication.class})
2、相关API
perform:执行一个RequestBuilder请求
andExpect:添加ResultMatcher->MockMvcResultMatchers验证规则
andReturn:最后返回相应的MvcResult->Response
@RunWith(SpringRunner.class) //底层用junit SpringJUnit4ClassRunner
@SpringBootTest(classes={DemoApplication.class})//启动整个springboot工程
@AutoConfigureMockMvc //自动配置mvc,mockmvc会模拟客户端的请求
public class MockMvcTestDemo {
@Autowired
private MockMvc mockMvc;//把它注入进来,相当于创建了一个客户端
@Test
public void apiTest() throws Exception{
MvcResult mvcResult=mockMvc.perform(MockMvcRequestBuilders.get("/test/home")).andExpect(MockMvcResultMatchers.status().isOk()).andReturn();
//mockMvc构建一个模拟请求
//MockMvcRequestBuilders用get方法请求
//andExpect添加一个断言
//MockMvcResultMatchers.status()获得请求的状态码,isOk()看状态码是否200
int status= mvcResult.getResponse().getStatus();
System.out.println(status);
}
}