代码改变世界

Mock測試(1)

2013-11-06 19:28  xiao蜗牛  阅读(255)  评论(0编辑  收藏  举报

PeakWang

Mail:wenping0820@163.com

2013/11/5


目录
1 什麽是mock測試?
2 Mock測試在什麽情境下使用?
3 Mock測試舉例—模擬MediaStore
4 心得體會
5 参考资料
6 示例下载地址

1 什麽是mock測試?

    Mock:模擬的,虛假的;mock測試就是在測試過程中,對於某些不容易構造或者不容易獲取的對象,

用一個虛擬的對象來創建以便測試的測試方法。它的核心思想是把測試環境獨立起來,自己控制運行環境。


2Mock測試在什麽情境下使用?
  在這裡模塊A依賴於模塊B,C,D,而我們要測的就是模塊A。但是它有依賴,而且這些依賴說不定現在根本都還沒實現或者很複雜,
在這種情況下,如果要測模塊A,MOCK就十分有必要了。
              

3 Mock測試舉例—模擬MediaStore
情境:

    我们的程序中要展示測試MediaStore沒有資料和有1000万筆資料時程式碼的表現。

不使用mock怎麼實現?

    刪除MediaStore中的資料來測試沒有資料的情況;在MediaStore中添加1000万筆資料來測試1000万筆資料時的情況。

    缺點:

    1)MediaStore不是我們負責的模塊,刪除資料存在風險;

    2)添加1000万筆資料很困難

使用mock怎麼實現?
Under test project

    寫一個供test project傳入mock context的方法:

public class MainActivity extends Activity {

    ……

    public void setMockContext(Context c){

        mContext = c;

        // 從mock context中拿數據

    }

    ……

}

將MockContex傳入under test project

public class MockTestCase extends ActivityInstrumentationTestCase2<MainActivity> {

    …...

    public void testMockObj(){

        mMockContext = new MyMockContext();

        mMainAct = getActivity();

        mMainAct.runOnUiThread(new Runnable() {

            @Override

              public void run() {

                    mMainAct.setMockContext(mMockContext);

             }

       });}

    …...

}

4 心得体会

  使用mock測試可以方便的控制測試環境,實現不修改被測程式碼和真實環境就能測試程式碼在不同環境的表現。
  Mock測試的關鍵是模擬出測試環境。
  一些mock測試的工具集:AndroidMock, EasyMock,可以輔助完成mock测试。

5 参考资料

6 示例下载地址