(二)詳細講解在Spring中進行集成測試

發表于:2009-05-21來源:作者:點擊數: 標簽:講解Springspring
Spring提供的 測試 幫助類 Spring在org.springframework.test包中為測試提供了幾個有用的類,它們都是J Unit Test Case的子類。通過層層擴展,不斷豐富測試的功能,我們可以通過下圖了解這些類的繼承關系: 圖 1 Spring 測試工具 類 下面,我們來逐個了解這

Spring提供的測試幫助類

        Spring在org.springframework.test包中為測試提供了幾個有用的類,它們都是JUnit TestCase的子類。通過層層擴展,不斷豐富測試的功能,我們可以通過下圖了解這些類的繼承關系: 
   

圖 1 Spring測試工具

        下面,我們來逐個了解這棵承繼類樹中每個節點測試類的功用,第一個要認識的是直接擴展于TestCase的ConditionalTestCase測試類。

ConditionalTestCase

        如果你直接通過擴展TestCase創建測試用例,則所有帶test前綴的測試方法都會被毫無例外地執行。而ConditionalTestCase可以讓你在某些情況下,有選擇地關閉掉一些測試方法,不讓他們在測試用例中執行。這給開發者帶來了很大的靈活性,因為他們可以在某次測試中關閉掉一些測試方法,而僅運行當前特別關注的測試方法,將問題域聚集到一定范圍內。 
        如果你要關閉某個測試方法行,僅需實現ConditionalTestCase的 isDisabledInThisEnvironment(String testMethodName)方法就可以了,ConditionalTestCase在運行每一個測試方法前會根據isDisabledInThisEnvironment()方法判斷是簡單放棄目標方法的運行,還是按正常方式執行之。該方法默認情況下對所有的測試方法都返回false,也即執行所有的測試方法。讓我們來看一個具體例子:
代碼清單 4 ConditionalTest1:有條件執行測試方法 package com.baobaotao.test;
import org.springframework.test.ConditionalTestCase;
public class ConditionalTest1 extends ConditionalTestCase {
①被忽略不執行的測試方法
private static String[] IGNORED_METHODS = {"testMethod1","testMethod3"};
@Override
protected boolean isDisabledInThisEnvironment(String testMethodName) {②所有在
for (String method : IGNORED_METHODS) { IGNORED_METHODS數組中
if (method.equals(testMethodName)) { 的方法都忽略執行。
return true;
}
}
return false;
}
public void testMethod1(){ ③不執行
System.out.println("method1");
}
public void testMethod2(){ ④執行
System.out.println("method2");
}
public void testMethod3(){ ⑤不執行
System.out.println("method3");
}
}

        如果我們直接承繼JUnit的TestCase,③、④及⑤處的三個測試方法都會被執行,但現在我們通過繼承ConditionalTestCase編寫測試類,并覆蓋了isDisabledInThisEnvironment()方法,當測試方法名位于IGNORED_METHODS數組中時,測試方法就被旁路掉了。因此當運行ConditionalTest1時,你會發現只有④處的testMethod2()測試方法得到了執行,其它兩個測試方法看起來也被成功執行,只不過會程序日志會給出報告,告訴你哪些測試方法是真正被執行,而哪些方法被“偽執行”的。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97