Spring Boot提供了许多实用程序和注释来帮助您测试应用程序。测试支持由两个模块提供:包含spring-boot-test核心项,和支持测试的spring-boot-test-autoconfigure自动配置。
大多数开发人员使用spring-boot-starter-test“Starter”,它导入Spring Boot测试模块以及JUnit,AssertJ,Hamcrest和许多其他有用的库。
在spring-boot-starter-test“入门”(中test scope)包含以下提供的库:
Spring Boot应用程序是一个Spring ApplicationContext,所以没有什么特别的东西可以用来测试它超出你通常使用的Spring语境。
Spring Boot提供了一个@SpringBootTest注释,spring-test @ContextConfiguration当您需要Spring Boot功能时,它可以用作标准注释的替代方法。注释的工作原理是通过 创建 ApplicationContext测试中使用的SpringApplication。除了 @SpringBootTest提供许多其他注释之外,还提供了用于 测试应用程序的更具体的切片。
默认情况下,@SpringBootTest不会启动服务器。您可以使用该webEnvironment 属性@SpringBootTest进一步优化测试的运行方式:
Demo应用测试,代码如下所示:
package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
/**
* Demo应用测试
*
* @author 大强
*
*/
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class DemoApplicationTests {
@Test
public void contextLoads() {
}
@Autowired
private MockMvc mvc;
@Test
public void exampleTest() throws Exception {
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(content().string("Hello LiSi"));
}
}
城市测试,代码如下所示:
package com.example.demo;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import com.example.demo.city.City;
import com.example.demo.city.CityRepository;
import com.example.demo.city.CityService;
import java.util.List;
/**
* 城市测试
*
* @author 大强
*/
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class CityTests {
@Autowired
private CityRepository cityRepository;
@Autowired
CityService cityService;
/**
* 新增城市
*/
@Test
public void addCity() {
City city = new City();
city.setName("西安");
city.setState("有效");
city = cityRepository.save(city);
Assert.assertNotNull(city.getId());
}
/**
* 根据名称查询单个城市测试
*/
@Test
public void getCity() {
City city = new City();
List
if (list.size() > 0) {
city = list.get(0);
}
Assert.assertEquals("西安", city.getName());
}
/**
* 查询所有城市列表测试
*/
@Test
public void getAllCitys() {
Iterable
Assert.assertTrue(iterable.iterator().hasNext());
}
/**
* 修改城市测试
*/
@Test
public void updateCity() {
City city = new City();
List
if (list.size() > 0) {
city = list.get(0);
}
city.setState("无效");
city = cityRepository.save(city);
Assert.assertEquals("无效", city.getState());
}
/**
* 删除城市测试
*/
@Test
public void deleteCity() {
City city = new City();
List
if (list.size() > 0) {
city = list.get(0);
}
cityRepository.delete(city);
list = cityRepository.findByName("西安");
if (list.size() > 0) {
city = list.get(0);
}
Assert.assertEquals(0, list.size());
}
}