天天看點

junit與mockMVC測試

一、   Junit常用注解

1.      @Before: 在每個測試方法執行之前都會執行一次,常用于初始化資料,資源

2.      @BeforeClass: 在所有測試方法執行之前執行,隻執行一次,類必須用static void 修飾

3.      @AfterClass:在所有測試方法之後執行,隻執行一次,類必須用static void 修飾

4.      @After: 在每個測試方法執行之後都會執行一次,用于關閉資源

5.      @Test:标注為測試方法

可參考部落格:http://bijian1013.iteye.com/blog/1987441

二、   mockMVC測試

1.      相關注解

a)      @WebAppConfiguration :啟動一個web伺服器,在測試結束之後再關閉該伺服器

b)     @RunWith(SpringJUnit4ClassRunner.class):指定單元測試執行類,該處使用SpringJUnit4ClassRunner.class

c)      @ ContextConfiguration(”classpath:xxxx”):指定spring的測試配置檔案,建議測試的配置檔案與正式的配置檔案分開,可以指定多個配置檔案格式如:locations = { "classpath*:/spring1.xml","classpath*:/spring2.xml" }

2.      執行個體化mockmvc

a)      MockMVCmockmvc= MockMvcBuilders.standaloneSetup(Object... controllers).build();通過指定一組控制器來建立一個mockmvc用于測試

3.      相關測試方法

a)      perform() : 執行請求,調用業務邏輯處理

b)     get(”url”):指定請求方式,還可以有post等相關方式,URL為請求路徑

c)      param(): 請求參數

d)     andReturn ():傳回相應的mvcResult處理結果

e)      andDo():添加一個結果處理器,如使用MockMvcResultHandlers.print()輸出整個響應結果資訊,andDo(MockMvcResultHandlers.print())

4.      代碼執行個體

5.  @WebAppConfiguration

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:spring-context-test.xml")

public class SubscriberCountControllerTest {

    @Autowired

    private WhiteListServicewhiteListService;

    @Autowired

    private InvalidParaminvalidParam;

    @Autowired

    private SubscriberCountServicesubscriberCountService;

    private MockMvc mockMvc;

    @Before

    public void setUp()throws Exception {

        mockMvc = MockMvcBuilders.standaloneSetup(newSubscriberCountController(

                invalidParam,whiteListService,subscriberCountService))

                .build();

    }

    @Test

    public void subscriberMinCount1day()throws Exception{

        String json=this.mockMvc.perform(get("/v1.0/realtimeSubscriberAnalysis/subscriberMinCounts")

        .param("areaIds","1;2")

        .param("recordedDateTime","2017-10-10 21:00:00")

        .param("applicationId","test")).andReturn().getResponse().getContentAsString();

        List<SubscriberDayCount> list=newObjectMapper().readValue(json,newTypeReference<List<SubscriberDayCount>>(){});

        for (SubscriberDayCount sc: list) {

            System.out.println(sc.toString());

        }

    }

}

參考部落格:https://www.cnblogs.com/xiaohunshi/p/5706943.html

                    https://www.cnblogs.com/lyy-2016/p/6122144.html