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工具进行测试
在要测试的方法中选中右击:
步1.jpg
选择创建一个测试类:
步2.jpg
可以勾选需要进行测试的方法:
步3.jpg
选完之后会在项目的测试包下创建一个service包,service包中创建了测试类
步4.jpg
二、对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 } } |
运行结果:
成功结果.jpg
失败结果.jpg
内容.jpg
注意:
对于所有的单元测试,在项目打包的时候会自动执行
希望打包的时候跳过单元测试:
mvn clean package -Dmaven.test.skip=true