SpringBoot-单元测试
一、对service进行测试:
在service中建立要测试的方法:
@Service
public class GirlService {
@Autowired
private GirlRepository girlRepository;
/**
* 通过id查询一个女生的信息
* @param id
* @return
*/
public Girl findOne(Integer id){
return girlRepository.findOne(id);
}
}
在test文件夹下已经有一个idea初始化项目时创建的文件GirlApplicationTests
方式一:手动建测试类
新建一个针对测试service中的方法进行测试的类GirlServiceTest:
@RunWith(SpringRunner.class) //表示在测试环境中运行
@SpringBootTest //启动整个springboot工程
public class GirlServiceTest {
@Autowired
private GirlService girlService;
@Test
public void findOneTest(){
Girl girl = girlService.findOne(12);
Assert.assertEquals(new Integer(14),girl.getAge());
}
}
方式二:利用idea工具进行测试
在要测试的方法中选中右击:
选择创建一个测试类:
可以勾选需要进行测试的方法:
选完之后会在项目的测试包下创建一个service包,service包中创建了测试类
二、对controller进行测试(API测试)
对controller中的girlList方法进行测试:
@RestController
public class GirlController {
/**
* getLogger方法中的参数与类名对应
*/
private final static Logger logger = LoggerFactory.getLogger(GirlController.class);
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlService girlService;
/**
* 查询所有女生
* @return
*/
@GetMapping(value = "/girls")
public List<Girl> girlList(){
// System.out.println("我是girlList方法");
logger.info("我是girlList方法");
return girlRepository.findAll();
}
}
用以上同样的步骤让idea创建出测试类
需要达到该方法通过什么请求,url地址是什么进行测试:
GirlController:
@RestController
public class GirlController {
/**
* getLogger方法中的参数与类名对应
*/
private final static Logger logger = LoggerFactory.getLogger(GirlController.class);
@Autowired
private GirlRepository girlRepository;
@Autowired
private GirlService girlService;
/**
* 查询所有女生
* @return
*/
@GetMapping(value = "/girls")
public List<Girl> girlList(){
// System.out.println("我是girlList方法");
logger.info("我是girlList方法");
return girlRepository.findAll();
}
}
GirlControllerTest:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class GirlControllerTest {
@Autowired
private MockMvc mvc;
//测试希望返回的状态码为200
@Test
public void girlList() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/girls"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string("abc")); //对内容进行判断,期望返回的内容是abc
}
}
运行结果:
注意:
对于所有的单元测试,在项目打包的时候会自动执行
希望打包的时候跳过单元测试:
mvn clean package -Dmaven.test.skip=true