国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

輕松測試-學習如何簡化測試外部資源

2019-11-18 13:07:03
字體:
來源:轉載
供稿:網友

  我們將從構建簡單的駝鹿監視軟件開始示例各種場景下的測試驅動開發。

  鹿是鹿家族中的最大個的成員。目前世界上估計有2百萬頭。為了更好的統計,世界駝鹿組織讓我們開發一個駝鹿監視軟件,希望保護人員能夠跟蹤和記錄他們見到的駝鹿。

輕松測試-學習如何簡化測試外部資源



本文假設讀者已經熟悉java/ant/maven/classpath,而且至少寫過一兩個簡單的junit測試。


Vanilla JUnit

首先編寫Moose類:
package moose;
import java.util.Date;
public class Moose {
    PRivate Date dateTimeObserved;
    private int age;
    
    public Moose(Date dateTimeObservedParam, int estimatedAge) {
        this.dateTimeObserved = dateTimeObservedParam;
        this.age = estimatedAge;
    }
}

  雖然駝鹿最長可以生存25年,但大部分駝鹿在年青的時候就被捕殺,通常只活了2、3年。根據世界駝鹿組織報告,我們想知道某一年齡后的駝鹿數據,因此我們增加了isOlderThan(int)方法。
單元測試如下:
    public void testIsOlderThan() {

        Moose moose = new Moose(new Date(), MOOSE_AGE);
        
        assertTrue("Moose age "+ MOOSE_AGE +" should of been older than "+ TEST_AGE, moose.isOlderThan(TEST_AGE) );
    }
方法:
    boolean isOlderThan(int contenderAge) {
        return this.age >= contenderAge;
    }
  這是一個普通的junit測試用例,這種方式通常用在測試驅動的開發中。這種完全獨立的方法一般是很少的;通常我們都需要一些代價昂貴的或比較難構建的外部資源。

使用偽對象和jMock

  觀察駝鹿的最佳時間是在黎明和黃昏,跟其他動物的觀察時間相似。WOM希望我們提供獲取記錄駝鹿被發現的時間的保護人員,這樣就可以通過String getObserverName()來獲取相應的駝鹿了。

  不幸地是,保護人員的接口來自第三方接口PersonnelUnit,而這是個大家伙沒有LDAP我們是無法構造的。

  為了測試getObserverName(),我們可以啟動LDAP服務器,發送數據,運行測試用例,然后再關閉LDAP。但那將是集成測試,而不是單元測試了,對我們來說寧可多寫些代碼。因此,我們創建了一個包含我們需要方法的Ranger接口:
    public interface Ranger {
    
        String getName();  
    }
  這給我們第一個啟發式的單元測試:用接口分離外部依靠。
  我們需要改變Moose的構造函數增加Ranger參數。于是變成:
    ... above as before...

    private Ranger observer;
    
    public Moose(   Date dateTimeObservedParam,
                    int estimatedAge,
                    Ranger observedBy)
    {
        this.dateTimeObserved = dateTimeObservedParam;
        this.age = estimatedAge;
        this.observer = observedBy;
    }

    ... below as before ...




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延安市| 香港 | 陈巴尔虎旗| 攀枝花市| 顺平县| 定远县| 怀安县| 淮南市| 黄平县| 乌审旗| 新津县| 洛隆县| 塘沽区| 碌曲县| 乌鲁木齐市| 应城市| 祁阳县| 城市| 营山县| 隆回县| 台中市| 嵊泗县| 都兰县| 台前县| 曲周县| 苏尼特左旗| 大理市| 土默特左旗| 康定县| 琼中| 启东市| 肇州县| 蒙山县| 玉溪市| 化州市| 宁河县| 化隆| 车险| 锡林浩特市| 阳江市| 余姚市|