java单元测试写法_mockmvc教程

java单元测试写法_mockmvc教程mock(模拟) 依赖于spring的框架和spring的环境 切片测试:指用mockmvc测试controller层,模拟返回service层的值,将层与层间的联系断开。 集成测试:指用mockmvc测试controller层,但不间隔service层。将controller层和service层集

java单元测试写法_mockmvc教程"

mock(模拟)

依赖于spring的框架和spring的环境

切片测试:指用mockmvc测试controller层,模拟返回service层的值,将层与层间的联系断开。

集成测试:指用mockmvc测试controller层,但不间隔service层。将controller层和service层集合起来测试。

java的单元测试框架有junit、mockMvc等

java的mock框架一般有Mockito、EasyMock、powerMock等(框架用来提供mock的工具,用于mock的打桩和断言)

springMVC的测试中,一般采用mockMvc+Mockito的组合来进行mock模拟测试 

 

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,classes = Application.class)   
@ContextConfiguration(loader = SpringBootContextLoaderEx.class) public class ControllerTestJuint extends BaseJunit{ private MockMvc mockMvc; @Autowired protected WebApplicationContext wac;     // mock的对象,stationService被mockbean注解之后,会自己注入到容器当中,stationService中的所有方法除开被打桩返回的,其余调用时,都返回null     @MockBean     private StationService stationService;      @Before() //这个方法在每个方法执行之前都会执行一遍 public void setup() { mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); //初始化MockMvc对象        SecurityUtils.setSecurityManager(wac.getBean(SecurityManager.class); }
  @Test   public void mockTest() throws Exception{      // 打桩,给指定方法返回值      when(stationService.add(any(),any())).thenReturn(true);      // 给返回值为void的方法打桩      doNothing.when(stationService).updateService(any()); ResultActions reaction = this.mockMvc.perform(MockMvcRequestBuilders.post("/sys/out/mockTest") .contentType(MediaType.APPLICATION_JSON)//请求体时json .param("customerId","7") .param("serviceType","all_service") .param("params[company_id]","1110000")//组装map对象 .param("params[AGE]","0,5"))           .anddo(MockMvcResultHandlers.print()) // 控制台打印出请求体 ); reaction.andExpect(MockMvcResultMatchers.status().isOk()); MvcResult mvcResult =reaction.andReturn(); System.out.println(mvcResult.getResponse().getContentAsString()); TimeUnit.SECONDS.sleep(60*60); } }

thenReturn 中可以指定多个返回值。在调用时返回值依次出现。若调用次数超过返回值的数量,再次调用时返回最后一个返回值

mockito不支持对静态(static)方法进行打桩。可以使用PowerMock对静态方法进行打桩

PowerMockito.mockStatic(AmountUtil.class);
PowerMockito.when(AmountUtil.CustomFormatWith2Digits(anyInt())).thenReturn("zzzz");

对mvc的controller层进行测试,使用Mockmvc

对普通方法进行单元测试,使用junit

普通方法也能进行mock,使用junit+mockitor

普通方法测试:

@Test
public void testBubbleSort() {
        
    Node node1 = new Node(1);
    Node node2 = new Node(2);
    Node node3 = new Node(3);

    Node[] nodes = {node1,node2,node3};
        
    bubbleSort.bubbleSort(nodes);
    Assert.assertEquals(3, nodes[0].getValue()); // 断言,验证测试的正确性
    Assert.assertEquals(2, nodes[1].getValue());
    Assert.assertEquals(1, nodes[2].getValue());
}

mockitor 可以使用verify来验证方法的调用次数

今天的文章java单元测试写法_mockmvc教程分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/46214.html

(0)
编程小号编程小号
上一篇 2023-09-06
下一篇 2023-09-06

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注