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 阅读(640) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年10月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜