• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件單元測試實踐小結

    發表于:2009-04-07來源:作者:點擊數: 標簽:實踐單元軟件
    應用 單元測試 ,首先要解決的是單元測試的關注點。 測試的關注點在于測試邏輯,只要有邏輯就要寫測試代碼。測試的手段就是驗證所有被 測試方法 的所有產出物,包括: 1. 測試方法的返回值 2. 測試方法的執行流程 例如: public class DomainService { privat
     應用單元測試,首先要解決的是單元測試的關注點。

            測試的關注點在于測試邏輯,只要有邏輯就要寫測試代碼。測試的手段就是驗證所有被測試方法的所有產出物,包括:

            1. 測試方法的返回值

            2. 測試方法的執行流程

            例如:

    public class DomainService {
    private static TheDAO dao = new TheDAO ();
    public ReturnObject findByCond(String) {
            return (ReturnObject)dao.getBeanByCondition("select * from ReturnObject where cond="+ paramter, ReturnObject.class);
        }
    }

     

            在對于測試findByCond方法,有兩個測試用例

            A.測傳遞給TheDAO.getBeanByCondition的參數的正確性,如果參數不是”select * from ReturnObject where cond=?”和ReturnObject.class則返回為null。

            B.測返回的對象正確性。 
      
            特別是第二點,在商業應用上比較常見的。通常有些方法無明顯output,通常是執行寫表操作的。對于這樣的方法就是測試它的執行流程。當然這些方法本身包含邏輯的。
     
            一個簡單的解決方法是利用Aclearcase/" target="_blank" >ccess Log來實現(雖然這樣的測試不多,而寫的case代碼也看著怪怪的)。

    public class ServiceExample{
        private DatabaseDao1 dao1;
        private DatabaseDao2 dao2;
     
        public void noOutputMethod(){
    if(...)
                dao1.update(...);
        if(...)
                dao2.delete();
    }
    }

            相關的測試代碼可以這樣:

    public class MockDatabaseDao1 implements DatabaseDao1 {
    private Map map;
    public void setMap(Map map){
         this.map = map;
     }
     
    public void update(args){
         map.put("MockDatabaseDao1.update", args);
    }
    }

      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>