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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 西平县| 钟祥市| 淮滨县| 太保市| 子长县| 大英县| 平乡县| 阳朔县| 汝阳县| 东乌珠穆沁旗| 盘山县| 沙河市| 崇义县| 四川省| 阿拉善右旗| 丰城市| 大连市| 红安县| 平塘县| 清原| 积石山| 普安县| 都匀市| 梁平县| 中山市| 扶沟县| 清水县| 武宣县| 武平县| 绥江县| 秭归县| 青冈县| 聂荣县| 定襄县| 金乡县| 嘉定区| 峨眉山市| 余干县| 泗水县| 乐昌市| 嘉黎县|