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。

   

最新内容请见作者的GitHub页:http://qaseven.github.io/

  

时间: 2024-08-31 22:52:21

android 单元测试的相关文章

浅谈软件测试串的Android单元测试

如果想在android里面做单元测试,有两条基本的路子可行. 第一,就是java程序员最为熟悉和常用的JUnit, 但是由于目前android sdk (version 1.1)中只是提供了stubbed methods/classes,没有具体的实现代码,所以如果用JUnit的话,我们需要在运行单元测试时,一定要 用JDK来运行,利用java命令来启动JUnit的某个Runner.如果是用Eclipse的话,可以在Run Configuration里新建一个JUnit.但是一定要记得在Clas

Android单元测试 - Sqlite、SharedPreference、Assets、文件操作 怎么测?

前言 上篇<Android单元测试 - 几个重要问题> 讲解了"何解决Android依赖.隔离Native方法.静态方法.RxJava异步转同步"这几个Presenter单元测试中常见问题.如果读者你消化得差不多,就接着看本篇吧. 在日常开发中,数据储存是必不可少的.例如,网络请求到数据,先存本地,下次打开页面,先从本地读取数据显示,再从服务器请求新数据.既然如此重要,对这块代码进行测试,也成为单元测试的重中之重了. 笔者在学会单元测试前,也像大多数人一样,写好了sql代码

[Android]单元测试实例

转自:http://yuanzhifei89.iteye.com/blog/1122104  作者:yuanzhifei  测试相关资源 让开发自动化: 用 Eclipse 插件提高代码质量http://www.ibm.com/developerworks/cn/java/j-ap01117/index.html  代码测试覆盖率介绍:http://www.cnblogs.com/coderzh/archive/2009/03/29/1424344.html  学习android单元测试时遇到的

Android单元测试 - 验证函数参数、返回值的正确姿势

前言 读者有没发觉我写文章时,喜欢有个前言.序?真相是,一半用来装逼凑字数,一半是因为不知道接下来要写什么,先闲聊几句压压惊^_^ 哈哈哈......该说的还是要说. 上一篇<Android单元测试 - Sqlite.SharedPreference.Assets.文件操作 怎么测?> 讲了一些DAO(Data Access Object)单元测试的细节.本篇讲解参数验证. 验证参数传递.函数返回值,是单元测试中十分重要的环节.笔者相信不少读者都有验证过参数,但是你的单元测试代码真的是正确的吗

图片-Android单元测试总是出错 求大神教导

问题描述 Android单元测试总是出错 求大神教导 解决方案 http://www.51testing.com/html/65/n-848765.html

Android单元测试初探

Android下有很多单元测试的框架,这里简单介绍一下我最近使用的两个,android SDK自带的单元测试框架和Robolectric. ###AndroidTestCase AndroidTestCase使用JUnit框架进行单元测试,首先需要在gradle中进入依赖 testCompile 'junit:junit:4.12' androidTestCompile 'com.android.support.test:runner:0.4' 这里一定要引入com.android.suppor

Android单元测试框架 Robolectric

Android开发者们注意了,这款测试框架一定会让你们兴奋不已,因为它是一款已基本上摆脱了模拟器测试的老套路的速率单元测试框架.Robolectric可以解压Android SDK,还能直接对应用进行测试,从而帮你轻而易举地解决所遇到的任何问题. Robolectric 是一款Android单元测试框架,示例代码: @RunWith(RobolectricTestRunner.class) public class MyActivityTest { @Test public void click

Android 单元测试如何输出测试日志

问题描述 xml,html都行需要跑在Jenkins上的,我也不是特别懂具体的东西,老大要的,路过的大婶给指条明路 问题补充:可能我表达的不是很清楚,在ant进行自动化测试的时候并把测试结果用xml文档的形式输出,我的想法是这样的,不知道可行吗? 解决方案 android 单元测试 直接用junit啊 单元测试输出日志public class MyTest extends AndroidTestCase{private final static String TAG = "myTag"

Android 单元测试cmd 命令集

对app进行单元测试时,或使用robotium进行黑盒测试时,需要把测试apk安装到模拟器或者android真机上,然后用命令去驱动测试 1.运行测试程序命令-运行测试工程中所有test方法: >adb shell am instrument -w 测试程序packageName/android.test.InstrumentationTestRunner 例如: >adb shell am instrument -w com.example.action02.test/android.tes