????????????InfoQ?????????????????????????????η???????????????????????????????????????????????????????????????
?????????????????????????????С??????????????????°?????????????????????????????????棬?????????????
????????д????????
??????????????????????????????????????????????????????????????????????????????д???????????????????????????????????м???????飬?????????????????????????????顣???????????????????????????????????????????????????????????????????????????
??????????д?????????????????????????????????????????????????????????bug???緢??bug?????????????????????????????????á???????????????????????????????????????????????????????????????????????????????????????????????????Щ???????Щ????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????д???????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????1. ????????????????????2. ???????е???????????м??????????????????????????????????е?????????е????????????????????н??????
??????????????????????飬?????????????????????????????????????????????????1. ???????????????????2. ???·?治???????????·???????????????????????????????
???????????????????????????????????1. ?????е??????????????app??????????????????????ε??????????????2. ???緢??bug????????debug??fixbug?????3. ????????????????????????????????
??????????????????????"????д???????"??????????????????????????????????????????????????????????????????????????????С?
????????????????????void?????????
?????????????????????????????????????????????????????????????д??????к????????????JUnit??Instrumentation test??Espresso??UiAutomator???????е???????Appium??Robotium??Calabash????????????????????JUnit?????????Щ????д???????????????????JVM??????????е?????????????????????????????????????????????????Functional test???????????????????????????????????????????????CI?????JVM?????У?????????????????С????????????????????????????????????????????project????????app??????????????????????????????????????????????????
??????????????????????????????????д??????????????????????????д??????????????????????????????????
????1??setup????new ????????????????Щ???????
????2????ж???????????????????????????????????
????3???????????????????????????????????
?????????????????????????????з??????????????????з?????????????void???????????з????????????????????????????????????????з??????????????????????????????????????????????????“??????”?
???????????????????????£???????????????????????????????Activity????????DataActivity?????????public void loadData()?????? ??????????DataModel??????????Щ?????????????????????????????????檔
?????????loadData()??????void?????????????????????????????????????loadData()????(???????????????????????????)?????????????????????????????????????????????????м??????????????????????????漰?????????棬???漰??DataModel???????????????????緵????????DataActivity?????????????????????????????????????????????ù??????????????м??????????????ù???????????????????????????Test Pyramid???????

????Test Pyramid?????????????????????????????????????????????????д?????????????????????????????????????С?????
??????????????case???????????????????????????loadData()??????????DataModel?????????????????????????????????????“??????DataModel????????????????????” ???????loadData()?????????“??????”??
????Mock????????Mockito???
??????????????????????????????????漰??mock????á??????mock???????????????????????????????mock?????????????????????????????£??????滻?????????????????????????1. ??????????mock????????????????????????????????????????? 2. ???????mock????????????????е?????????????????????Σ?????????????
????????mock???????????mock??????????????????????Mockito??JMockit????????????????????mock static method??final class??final method????????????????????????Mockito????????????????????????????????JMockit??????????????????Щ??????????????Mockito??JMockit?????£?ò????????????JMockit????????????????????robolectric????????Щbug????????????Mockito?н??????????????г???????????????????????????????????飬????????????????????????
???????????Mockito???????????????static method??final class??final method??а?mock???????????ν??????????????????
?????????????????mock?????????
??????????????????????????????????£???DataModel????mock???????????????У?DataModel????????????????
????????????????????????????????????testing product flavor???????????????????????????????????product flavor????testing???????testing flavor???棬????????mock????д???mock??implementation????????factory????client?????factory??????testing flavor???????flavor????????????????testing??????????????testing flavor?????????factory???????mock??????????????????????????????????????????mock??????????????ú??a???????????????dependency?????factory??????ú????????????????flavor?????gradle???????ú??????????????????????ο?????????
??????????????????????????????????????????????????????????????????????????????DataActivity?????????????????????DataModel??????????????DataActivity????new?????????????????DataModel??????????????????set??DataActivity?????????????????????????????????????????????????????????к???????????????飬????RoboGuice??Dagger??Dagger2?????????????Dagger2?????????????????????DI????
????????Dagger2?????£?????????????????????????????????п?????????й???????????????????Dagger2?????£?????????????????????????????????????????????????????????ɡ?