spring test教程

代碼覆蓋率 = 被測代碼行數 / 參測代碼總行數 * 100%。java

行覆蓋 它又被稱做語句覆蓋或基本塊覆蓋。這是一種較爲經常使用且具備表明性的指標,度量的是被測代碼中每一個可執行語句是否被執行到。
條件覆蓋 它度量的是當代碼中存在分支時,是否能覆蓋進入分支和不進入分支這兩種狀況。這要求開發人員編寫多個測試用例以分別知足進入分支與不進入分支這兩種狀況。
路徑覆蓋 它度量的是當代碼中存在多個分支時,是否覆蓋到分支之間不一樣組合方式所產生的所有路徑。這是一種力度最強的覆蓋檢測,相對而言,條件覆蓋只是路徑覆蓋中的一部分。web

在這三種覆蓋指標中,行覆蓋簡單,適用性廣,但可能會被認爲是「最弱的覆蓋」,其實否則。行覆蓋相對於條件或路徑覆蓋,能夠使開發人員經過儘量少的測試數據和用例,覆蓋儘量多的代碼。一般狀況下,是先經過工具檢測一遍整個工程單元測試的行覆蓋狀況,而後針對沒有被覆蓋到的代碼,分析其沒有被覆蓋到的緣由。若是是因爲該代碼所在分支因爲不知足進入該分支的條件而沒有被覆蓋,那麼開發人員纔會進一步修改或增長測試代碼,完成該部分的條件或路徑覆蓋。spring

@RunWith:用於指定junit運行環境,是junit提供給其餘框架測試環境接口擴展,爲了便於使用spring的依賴注入,spring提供了org.springframework.test.context.junit4.SpringJUnit4ClassRunner做爲Junit測試環境數據庫

@ContextConfiguration({"classpath:applicationContext.xml","classpath:spring/buyer/applicationContext-service.xml"}) 導入配置文件,這裏個人applicationContext配置文件是根據模塊來分類的。若是有多個模塊就引入多個「applicationContext-service.xml」文件。若是全部的都是寫在「applicationContext。xml」中則這樣導入:
@ContextConfiguration(locations = "classpath:applicationContext.xml")spring-mvc

@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)這裏的事務關聯到配置文件中的事務控制器(transactionManager = "transactionManager"),同時指定自動回滾(defaultRollback = true)。這樣作操做的數據纔不會污染數據庫!
@Transactional:這個很是關鍵,若是不加入這個註解配置,事務控制就會徹底失效!mvc

整個測試過程很是有規律:
一、準備測試環境
二、經過MockMvc執行請求
3.一、添加驗證斷言
3.二、添加結果處理器
3.三、獲得MvcResult進行自定義斷言/進行下一步的異步請求
四、卸載測試環境app

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mvc.xml","classpath:spring-context*.xml"})
@WebAppConfiguration
@Autowired
    private WebApplicationContext wac;
    private MockMvc mockMvc;


    @Before
    public void setUp() throws Exception {
        mockMvc =  MockMvcBuilders.webAppContextSetup(wac).build();
    }
    @Test
    public void testHome() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk())
                .andExpect(content().string(equalTo("Hello World!")));
    }
相關文章
相關標籤/搜索