Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 693|回复: 0

[实例教程]通过AndroidTestCase来进行Android单元测试

[复制链接]

该用户从未签到

发表于 2011-10-22 12:15:58 | 显示全部楼层 |阅读模式
介绍过了如何用intrumentation进行android单元测试,其实还有一种方法同样可以,那就是利用AndroidTestCase来做单元测试,intrumentationTestCase和AndroidTestCase都是Junit.framwork.TestCase的子类,二者代表不用的方向。

        如果想通过AndroidTestCase,大致可以通过以下几个步骤实现:

        1.添加自己的test case code, 让他们继承自AndroidTestCase。
        2.定义自己的testSuite类,用来管理test cases.
        3.定义自己的testRunner,用来执行测试

        下面首先来看一下这种方法所涉及到的android的类以及接口。

        AndroidTestCaseAndroid test cases classes需要从这个类派生出来,而不再是从junit.framework.TestCase.二者之间的最主要区别就是Androidtest cases提供了一个方法getContext()来获取当前的上下文变量,这在android测试中很重要的,因为很多的androidapi都需要context。

       AndroidTestCase主要成员:

       setUp()
       tearDown()
       testAndroidTestCaseSetupProperly()

       TestSuite (in package junit.package)一个TestSuite就是一系列test case的集合。通过testsuite可以更好的来管理test case

       TestSuite主要成员:

        VoidaddTest (Test test)
        void addTestSuite(Class testClass)

        下面是一小段往test suite中添加testcase的示例:

java代码: TestSuite suite= new TestSuite();

suite.addTest(new MathTest("testAdd"));

suite.addTest(new MathTest("testDivideByZero"));

   或者可以通过addTestSuite()来添加:

Java代码
suite.addTestSuite(MathTest.class);

TestListener (in packagejunit.framework)
  这是一个interface ,用来监听测试进程有以下4个PublicMethods :

Java代码:
abstractvoid addError(Test test,Throwable t)

Anerror occurred.

abstractvoid addFailure(Test test,AssertionFailedError t)

Afailure occurred.

abstractvoid endTest(Test test)

Atest ended.

abstractvoid startTest(Test test)

Atest started.
AndroidTestRunner继承自classjunit.runner.BaseTestRunner,但是它没有提供ui,甚至来一个基于console的UI都没有,所以,如果想要很好的查看测试结果的话,你需要自己来处理来自于testrunner的callback函数。一会可以通过例子演示一下
      AndroidTestRunner主要方法:

Java代码:
SetTest();

runTest()

addTestListener()

setContext()
  如果要使用AndroidTestRunner,需要在permission inmanifest.xml中添加权限:

Java代码:
<uses-library android:name="android.test.runner"/>

   最后,通过一个实例来演示一下:

Java代码:
package eoe.ut.prac;



import android.test.AndroidTestCase;

import android.util.Log;



public class MathTest extends AndroidTestCase {

protected int i1;

protected int i2;

static final String LOG_TAG = "MathTest";



public void setUp() {

i1 = 2;

i2 = 3;

}

public void testAdd() {

Log.d( LOG_TAG, "testAdd" );

assertTrue( LOG_TAG+"1", ( ( i1 + i2 ) == 5 ) );

}



public void testAndroidTestCaseSetupProperly() {

super.testAndroidTestCaseSetupProperly();

Log.d( LOG_TAG, "testAndroidTestCaseSetupProperly" );

}

}


定义一个test suite类

Java代码:
package eoe.ut.prac;



import junit.framework.TestSuite;



public class ExampleSuite extends TestSuite {

public ExampleSuite() {

addTestSuite( MathTest.class );

}

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-6 04:19 , Processed in 0.398004 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表