qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          android 單元測試

          一、Android單元測試
            基本流程
            新建一個測試工程( Android Test Project),選擇你要測試的工程,或者說你要測試的類所在的工程,創建測試用例,如果有需要還可以建立TestSuite來配置要測試的用例,最后右鍵選擇測試用例類,run as – >“Android Junit Test” 即可。然后你也可以直接在被測試工程中測試,這樣不需要建立測試工程。
            1、建立測試工程
            圖 1
            2、選擇要測試的工程
            圖 2
            3、選擇目標平臺
            圖 3
           4、選擇finish后,在AndroidManifest.xml中填寫如下代碼:
          <! –  添加InstrumentationTestRunner ,targetPackage修改成你的測試工程的包名即可-->
          <instrumentation
          android:name="android.test.InstrumentationTestRunner"
          android:targetPackage="com.example.umengsocialtest" />
          <! –  application 添加test runner -->
          <application
          android:icon="@drawable/ic_launcher"
          android:label="@string/app_name" >
          <! –  添加test runner -->
          <uses-library android:name="android.test.runner" />
          </application>
            5、右鍵點擊測試工程的“src”目錄,選擇”new”-->“Junit Test Case”,然后輸入測試用例名稱和要繼承的測試類,正常情況下,繼承自AndroidTestCase即可,如果你要測試的類依賴于Activity,你可以繼承自ActivityInstrumentationTestCase2<T>,其中T為你mock的Activity,你可以在測試工程下新建一個Activity用于測試,這里我們選擇繼承自ActivityInstrumentationTestCase2。最后選擇你要測試的類,這里我選擇的是UMAppAdapter。選擇”next”,然后選擇你要測試的方法,勾選即可。如圖4
            圖 4
            6、選擇要測試的方法
            圖 5

           7、如果你要測試的類需要Activity參數,你可以創建一個Activity來用于測試,使用AndroidTestCasse則不需要這么做。代碼如下:
          public class MockActivity extends Activity {
          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          }
          }
            8、在測試用例中,填寫代碼
          public class UMAppAdapterTest extends ActivityInstrumentationTestCase2<MockActivity> {
          /**
          *
          */
          private Activity mActivity = null;
          /**
          *
          */
          private UMBaseAdapter mAdapter = null;
          /**
          * @Title: UMAppAdapterTest
          * @Description:
          *      UMAppAdapterTest Constructor
          *
          * @param activityClass
          */
          public UMAppAdapterTest(Class<MockActivity> activityClass) {
          super(activityClass);
          }
          public UMAppAdapterTest() {
          super(MockActivity.class);
          setName("MockActivity");
          }
          @Before
          protected void setUp() throws Exception {
          super.setUp();
          mActivity = getActivity();
          assertNotNull(mActivity);
          }
          @After
          protected void tearDown() throws Exception {
          super.tearDown();
          mActivity = null;
          clearState();
          }
          @Test
          public void testGetBitmap() {
          mAdapter = new UMAppAdapter(mActivity);
          // 實際會觸發截屏操作,返回當前截屏
          assertNotNull(mAdapter.getBitmap());
          // 使用控制器來截圖, 實際上調用的是mAdapter.getBitmap()
          UMScrShotController controller = UMScrShotController.getInstance();
          controller.setAdapter(mAdapter);
          assertNotNull(controller.takeScreenShot());
          }
          }
            為了篇幅簡短,這里只列出了部分測試用例代碼。

          字體:        | 上一篇 下一篇 | 打印  | 我要投稿 

            二、TestSuite的使用
            1、新建一個JunitTest Case,父類選擇TestSuite,如圖6。
            圖 6
            2、樣例代碼如下,覆寫suite(),然后添加你要測試的測試用例即可。com.example.socialtest.ut.scrshotlib.UMAppAdapterTest是UMAppAdapterTest這個測試用例的完整路徑,添加進去即可。多個測試用例使用逗號隔開。如下:
          public class YourTestSuite extends TestSuite {
          public static Test suite() {
          return new TestSuiteBuilder(SocialTestSuite.class).includePackages(
          "com.example.socialtest.ut.scrshotlib.UMAppAdapterTest",
          "com.example.socialtest.ut.scrshotlib.UMScrShotControllerTest"
          ).build();
          }
          }
            3、最后右鍵選擇你的TestSuite類,選擇”runas “, 然后選擇android Junit Test即可運行TestSuite.。
            如圖7。

          posted on 2013-10-22 11:22 順其自然EVO 閱讀(659) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2013年10月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 望江县| 慈溪市| 巴彦淖尔市| 禹城市| 河津市| 江源县| 托克逊县| 五家渠市| 南陵县| 东源县| 澎湖县| 泰州市| 砀山县| 绥宁县| 永善县| 工布江达县| 古交市| 定襄县| 黑龙江省| 萝北县| 闵行区| 东丽区| 筠连县| 团风县| 会昌县| 敖汉旗| 琼结县| 永嘉县| 台中市| 昂仁县| 肇东市| 若尔盖县| 驻马店市| 东阿县| 修文县| 延庆县| 商都县| 仙桃市| 辰溪县| 观塘区| 吉木萨尔县|