spring boot 測試用例


 junit 是一個面向於研發人員使用的輕量的測試模塊,適合做單元測試。而testng百度后發現更強大,可以做功能測試,但對於我這種RD,貌似junit足溝了呢!

java Mock PowerMock、jmockit 模擬包非常優秀,我目前選型學會一個就不錯了,不做評價,我學的powermock,據說jmockit更強大。但是powermock貌似繼承了舊的easymock和jmock,所以用的人比較大(個人理解)。

 

對於junit測試的幾個注解

@RunWith

@Before 

@Test

@After

 

powerMock注解

@Mock

@InjectMocks

 

@RunWith 表示運行方式,@RunWith(JUnit4TestRunner)、@RunWith(SpringRunner.class),@RunWith(PowerMockRunner.class) 三種運行方式,分別在不同的場景中使用。

@Before是 @Test運行之前調用的方法,可以做初始化操作

@Test  是測試用例的單元

@After 執行完測試用例需要執行的清理工作

@Mock  有點類似Autowired注解,而@Mock注解是自動實現模擬對象,而並非Bean實例創建

@InjectMocks 實現對@Mock注解的對象注入到當前對象中,通過MockitoAnnotations.initMocks(this);實現

 

package aa;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.modules.junit4.PowerMockRunnerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

import static org.mockito.Matchers.any;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


@RunWith(PowerMockRunner.class)
@SpringBootTest(classes = MainApplication.class)
@PowerMockRunnerDelegate(SpringRunner.class)
@PowerMockIgnore("javax.management.*") 
public class moreTest {

    @Mock
    TService tService;
    @InjectMocks
    TController controller;
    @Autowired
    private WebApplicationContext ctx;
    private MockMvc mvc;

    @Before
    public void before() throws Exception {

        MockitoAnnotations.initMocks(this);
//如果簡單mock一個請求可以使用這個,但是要模擬注入,還是按下面的方式實現controller比較好
//        mvc = MockMvcBuilders.webAppContextSetup(ctx).build();
        mvc = MockMvcBuilders.standaloneSetup(controller).build();
//        taskPackageService=PowerMockito.mock(TService);
        PowerMockito.when(tService.queryMethod(any(ParameClass.class)))
                .thenReturn(88);
    PowerMockito.whenNew(TService.class).withNoArguments().thenReturn(tService);
    }

    @Test
    public void searchTest() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/welcome").header("User-Agent", "xx")
                .param("page", "1")
        ).andExpect(status().isOk()).andDo((MvcResult result) -> {
            System.out.println(result.getResponse().getContentAsString());
        });
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM