官术网_书友最值得收藏!

1.6 單元測試

測試開發中的手機軟件,往往先采用模擬器。搭建分布式系統往往比較麻煩,需要能夠讓其他的代碼邏輯在沒有真正的分布式系統的情況下也可以測試,也就是可以方便地進行單元測試。

通過依賴注入(Dependency Injection)解決單元測試問題。例如,有個類需要訪問數據庫:

        public class Example {
          private DatabaseThingie myDatabase; //依賴項


          public Example() {
            myDatabase = new DatabaseThingie();
          }


          public void doStuff() {
            ...
            myDatabase.getData();
            ...
          }
        }

有的數據庫安裝起來比較麻煩,因為無法初始化Example類的實例,導致后續的測試無法進行。這時,可以使用從外部注入的實例。

        public class Example {
          private DatabaseThingie myDatabase;


          public Example() {
            myDatabase = new DatabaseThingie();
          }


          public Example(DatabaseThingie useThisDatabaseInstead) {
            myDatabase = useThisDatabaseInstead;
          }


          public void doStuff() {
            ...
            myDatabase.getData();
            ...
          }
        }

測試類中可以方便地注入數據庫存根類。

        public class ExampleTest {
          TestDoStuff() {
            MockDatabase mockDatabase = new MockDatabase();


            // MockDatabase是DatabaseThingie的子類,因此可以在這里注入它
            Example example = new Example(mockDatabase);


            example.doStuff();
            mockDatabase.AssertGetDataWasCalled();
          }
        }
主站蜘蛛池模板: 天峻县| 宕昌县| 图木舒克市| 嘉鱼县| 盱眙县| 岑溪市| 平远县| 齐齐哈尔市| 栾城县| 石渠县| 青岛市| 云霄县| 鄄城县| 凤台县| 焦作市| 绥宁县| 皮山县| 买车| 延安市| 马边| 龙州县| 洛南县| 嘉黎县| 崇阳县| 梓潼县| 介休市| 峨山| 通榆县| 三穗县| 绥阳县| 涿州市| 获嘉县| 宁城县| 海宁市| 资中县| 西畴县| 囊谦县| 道真| 瑞昌市| 鄂尔多斯市| 临漳县|