现在的位置: 首页 > 综合 > 正文

[android test]使用命令行工具来进行测试

2013年07月20日 ⁄ 综合 ⁄ 共 1960字 ⁄ 字号 评论关闭
文章目录

原文地址:https://developer.android.com/tools/testing/testing_otheride.html

這章主要講解使用命令行來創建測試工程、創建測試類、運行測試和使用Instrumentation 命令。

創建測試工程

創建一個新的測試工程的方法為:

android create test-project -m <main_path> -n <project_name> -p <test_path>

下面講述上面命令行所涉及到的參數。

Flag

 Value

Description

-m或--main

 被測試項目的路徑(相對與該項目包的目錄)

舉例:如果被測試項目的路徑是source/HelloAndroid,那麼這個參數後面就應該接 ../HelloAndroid

-n或--name

 測試項目的名字

舉例:如果被測項目的名字是HelloAndroid,那麼我們可以定義為 HelloAndroidTest

-p或--path

 存放測試項目的目錄

存放Android tool生成的文件和目錄。

舉例如下:

parker@parker:~$ cd /data/workplace/

parker@parker:/data/workplace$ android create test-project -m ../HelloAndroid -n HelloAndroidTest -p HelloAndroidTest

更新測試工程

如果已經創建了一個測試工程,但是我們現在想改變它,我們可以使用:

android update test-project -m <main_path> -p <test_path>

創建測試類

雖然你的测试包可以结合activityandroid测试扩展类、Junit扩展或者普通类,但是你应该继承android测试类或者Junit类,因为它们提供了最好的测试功能。

如果你通过InstrumentationTestRunner(或者相关的test runner)运行你的测试,它会运行每个类中的所有测试方法。你可以通过使用TestSuit类改变这些行为。

    測試包中有提供了Instrumentation的測試類和一些继承了TestCase的类。這些類可能要覆写setUp()tearDown()方法。setUp()主要是为测试设置环境,你可以在这里初始化一个Intent对象,可以使用intent开启测试activitytearDown()主要在完成所有的测试放法后调用,它在移动到下一组测试之前垃圾回收和重新设定。

     一般来说,我们也经常把testPreConditions()方法添加到测试类中。这个方法用来正确的初始化测试应用。如果测试失败,你知道是初始化出现错误。当出现这种情况,进一步测试的结果是有疑问的,除非你不管测试是否成功。

運行測試

1. 我們可以通過ant 快速的編譯和運行android 測試項目。我們可以使用ant來運行測試項目中所有的測試。

2. 我們還可以在模擬器和真實設備中運行測試項目。首先要將被測試的應用和測試工程都編譯到設備中,然後調用adb shell 中的am命令。

$ adb shell am instrument -w <test_package_name>/<runner_class>

<test_package_name>為測試項目的包名,<runner_class>android test runner的名字,一般和androidManifest<instrumentation>對象中的name一致。

下面講述上面命令行所涉及到的參數。

Flag

Value

Description

-w

None

保持adb shell打开直至测试完成

-r

None

以原始形式输出测试结果。该选项通常是在性能测试时与-e perf true一起使用

-e

<test_operation>

提供了以键值对形式存在的测试选项。Android中提供了多种键值对,详细情况可以自己查阅http://developer.android.com/tools/testing/testing_otheride.html#AMSyntax

舉例如下:

root@android:/ # am instrument -w aexp.junit.test/android.test.InstrumentationTestRunner

aexp.junit.ContactTest:...

aexp.junit.MathTest:..

Test results for InstrumentationTestRunner=.....

Time: 0.204

OK (5 tests)

抱歉!评论已关闭.