写在开头:@SpringBootTest和@WebMvcTest不能同时用,@Test默认不支持多线程
一、数据库测试
1、pom.xml文件加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2、新建个简单操作数据库的类,简单查询过程
@Repository
public class ProductDao {
@Autowired
JdbcTemplate jdbcTemplate;
public void selectData(){
String sql = "select * from product";
List<Map<String,Object>> result = jdbcTemplate.queryForList(sql);
}
}
3、新建测试类:在项目 /src/test/java/dao(缺少的自行创建),新建TestDao,文件加入相应的注解
// 获取启动类,加载配置
@SpringBootTest
// 让JUnit运行Spring的测试环境,得到Spring上下文
@RunWith(SpringRunner.class)
public class TestDao {
@Autowired
ProductDao productDao;
@Test
public void test(){
productDao.selectData();
}
}
二、mvc测试
1、同样需要在pom.xml引入依赖,这里不重复,然后新建个控制层的类
@RestController
public class ProductController {
@RequestMapping("/product")
public String product(){
return "product:content";
}
}
2、新建测试类:在项目 /src/test/java/controller(缺少的自行创建),新建TestController,文件加入相应的注解,部分引入没写
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@WebMvcTest(ProductController.class)
public class TestController {
private MockMvc mvc;
@Autowired
private WebApplicationContext webApplicationContext;
@Before
public void setup(){
mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
public void testMvc() throws Exception{
mvc.perform(get("/product") // 测试的请求地址
// 返回值类型
.accept(MediaType.APPLICATION_JSON_UTF8))
// 返回状态码
.andExpect(status().isOk())
.andDo(print()); // 打印返回的信息
}
}