简单搭建环境,测试Android应用

如果你编写完Android应用软件,要进行一个测试,可以学习这个方法,具体内容如下所示:

用Eclipse建立测试

首先搭建测试环境:

  1. 下载安装Eclipse ADT插件
  2. 导入或创建我们想要测试的Android应用项目。
  3. 生成一个对应于应用程序项目测试的测试项目。为导入项目生成一个测试项目: a.在项目浏览器里,右击我们的应用项目,然后选择Android Tools > New Test Project b.在新建Android测试项目面板,为我们的测试项目设置合适的参数,然后点击Finish

上面环境搭建好后可以进入创建与执行测试用例:

创建一个测试用例

Activity测试都是通过结构化的方式编写的。请务必把测试代码放在一个单独的包内,从而与被测试的代码分开。

按照惯例,测试包的名称应该遵循与应用包名相同的命名方式,在应用包名后接“.tests”。在创建的测试包中,为我们的测试用例添加Java类。按照惯例,测试用例名称也应遵循要测试的Java或Android的类相同的名称,并增加后缀“Test”。

要在Eclipse中创建一个新的测试用例可遵循如下步骤:

a. 在Package Explorer中,右键点击待测试工程的src/文件夹,New > Package

b. 设置文件夹名称<你的包名称>.tests(比如, com.example.android.testingfun.tests)并点击Finish

c. 右键点击创建的测试包,并选择New > Calss

d. 设置文件名称<你的Activity名称>Test(比如, MyFirstTestActivityTest),然后点击Finish

建立测试数据集(Fixture)

测试数据集包含运行测试前必须生成的一些对象。要建立测试数据集,可以在我们的测试中覆写setUp()tearDown()方法。测试会在运行任何其它测试方法之前自动执行setUp()方法。我们可以用这些方法使得被测试代码与测试初始化和清理是分开的。

在你的Eclipse中建立测试数据集:

1 . 在 Package Explorer中双击测试打开之前编写的测试用例,然后修改测试用例使它继承ActivityTestCase的子类。比如:

public class MyFirstTestActivityTest
        extends ActivityInstrumentationTestCase2<MyFirstTestActivity> {

2 . 下一步,给测试用例添加构造函数和setUp()方法,并为我们想测试的Activity添加变量声明。比如:

public class MyFirstTestActivityTest
        extends ActivityInstrumentationTestCase2<MyFirstTestActivity> {    private MyFirstTestActivity mFirstTestActivity;    private TextView mFirstTestText;    public MyFirstTestActivityTest() {        super(MyFirstTestActivity.class);
    }    @Override
    protected void setUp() throws Exception {        super.setUp();
        mFirstTestActivity = getActivity();
        mFirstTestText =
                (TextView) mFirstTestActivity
                .findViewById(R.id.my_first_test_text_view);
    }
}

构造函数是由测试用的Runner调用,用于初始化测试类的,而setUp()方法是由测试Runner在其他测试方法开始前运行的。

通常在setUp()方法中,我们应该:

  • setUp() 调用父类构造函数,这是JUnit要求的。
  • 初始化测试数据集的状态,具体而言:
    • 定义保存测试数据及状态的实例变量
    • 创建并保存正在测试的Activity的引用实例。
    • 获得想要测试的Activity中任何UI组件的引用。

我们可以使用getActivity()方法得到正在测试的Activity的引用。

增加一个测试前提

我们最好在执行测试之前,检查测试数据集的设置是否正确,以及我们想要测试的对象是否已经正确地初始化。这样,测试就不会因为有测试数据集的设置错误而失败。按照惯例,验证测试数据集的方法被称为testPreconditions()

例如,我们可能想添加一个像这样的testPreconditons()方法:

public void testPreconditions() {
    assertNotNull(“mFirstTestActivity is null”, mFirstTestActivity);
    assertNotNull(“mFirstTestText is null”, mFirstTestText);
}

Assertion(断言,译者注)方法源自于JunitAssert类。通常,我们可以使用断言来验证某一特定的条件是否是真的。

  • 如果条件为假,断言方法抛出一个AssertionFailedError异常,通常会由测试Runner报告。我们可以在断言失败时给断言方法添加一个字符串作为第一个参数从而给出一些上下文详细信息。
  • 如果条件为真,测试通过。

在这两种情况下,Runner都会继续运行其它测试用例的测试方法。

添加一个测试方法来验证Activity

下一步,添加一个或多个测试方法来验证Activity布局和功能。

例如,如果我们的Activity含有一个TextView,可以添加如下方法来检查它是否有正确的标签文本:

public void testMyFirstTestTextView_labelText() {    final String expected =
            mFirstTestActivity.getString(R.string.my_first_test);    final String actual = mFirstTestText.getText().toString();
    assertEquals(expected, actual);
}

该 testMyFirstTestTextView_labelText() 方法只是简单的检查Layout中TextView的默认文本是否和strings.xml资源中定义的文本一样。

注意:当命名测试方法时,我们可以使用下划线将被测试的内容与测试用例区分开。这种风格使得我们可以更容易分清哪些是测试用例。

做这种类型的字符串比较时,推荐从资源文件中读取预期字符串,而不是在代码中硬性编写字符串做比较。这可以防止当资源文件中的字符串定义被修改时,会影响到测试的效果。

为了进行比较,预期的和实际的字符串都要做为assertEquals()方法的参数。如果值是不一样的,断言将抛出一个AssertionFailedError异常。

如果添加了一个testPreconditions()方法,我们可以把测试方法放在testPreconditions之后。

要参看一个完整的测试案例,可以参考本节示例中的MyFirstTestActivityTest.java。

构建和运行测试

我们可以在Eclipse中的包浏览器(Package Explorer)中运行我们的测试。

利用如下步骤构建和运行测试:

  1. 连接一个Android设备,在设备或模拟器中,打开设置菜单,选择开发者选项并确保启用USB调试。
  2. 在包浏览器(Package Explorer)中,右键单击测试类,并选择Run As > Android Junit Test
  3. 在Android设备选择对话框,选择刚才连接的设备,然后单击“确定”。
  4. 在JUnit视图,验证测试是否通过,有无错误或失败。

用Gradle version 建立测试

  1. 连接Android真机或开启Android模拟器。
  2. 在项目目录运行如下命令:

./gradlew build connectedCheck

时间: 2024-10-14 20:04:51

简单搭建环境,测试Android应用的相关文章

搭建和测试Android JAVA NDK

1.下载NDK,  android-ndk-r9c-windows-x86_64.zip,解压ndk,截图如下: 2.以编译ndk中的sample为例: 导入sample中的hello-jni项目,导入的项目结果如下: 3.右击项目:helloJni-->右击--->properties--->Builder 4.新建Builder--->Program 5.点击OK,然后弹出来一个窗口,其中Location的位置填写的是ndk-build.cmd所在的位置: 点击OK,并将N

Robotium第一天:搭建环境测试微信

因为要在命令行下运行一些android的工具,所以配置一些环境变量会比较方便: 遇到问题: java -jar re-sign.jar 出现提示android路径没有配置好: 需要配置如下: 配置ANDROID_HOME为android sdk的安卓目录,例如:D:\android-sdk 在path下添加这两个: %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools; 重新开关一次命令窗口 在真机中安装APK(以腾讯微信作为测试的apk) 因为r

Entity Framework Demo(一) 简单搭建环境

Entity Framwork(实体框架,简称EF)是ORM(Object Relational Mapping,对象映射关系)的一个解决方案. EF允许项目将数据库的表映射为实体,并封装了操作方法,方便开发人员直接操作数据库. EF有三种开发模式,分别是: Database First(数据库先行): 将已存在的数据库中的表映射为实体: Code First(代码先行):先编写代码,再通过EF反向生成数据库的表: Model First(模型先行):通过一个可视化模型,分别生成数据库和代码.

CAS(Central Authentication Service)——windows上简单搭建及测试

入手文章,大神绕行. 一,服务端搭建 我使用的服务端版本为:cas-server-3.4.11-release.zip.解压之后,将\cas-server-3.4.11-release\cas-server-3.4.11\modules\cas-server-webapp-3.4.11.war文件改名为cas.war,放置到tomcat的Tomcat\webapps目录下,之后启动tomcat. 之后进入*****\Tomcat\webapps\cas文件夹,修改两个配置文件: 1,修改Tomc

Entity Framework Demo简单搭建环境

 Entity Framwork(实体框架,简称EF)是ORM(Object Relational Mapping,对象映射关系)的一个解决方案. EF允许项目将数据库的表映射为实体,并封装了操作方法,方便开发人员直接操作数据库. EF有三种开发模式,分别是: Database First(数据库先行): 将已存在的数据库中的表映射为实体: Code First(代码先行):先编写代码,再通过EF反向生成数据库的表: Model First(模型先行):通过一个可视化模型,分别生成数据库和代

史上最简单的Ubuntu上搭建java和Android开发环境

在Ubuntu下搭建java环境和Android环境: 1.搭建java环境请参考他:搭建java环境步骤 2.当java环境搭建好了之后,下载(sdk+adt+eclipse),链接地址:包含(adt+sdk+eclipse) 下载完了,只需解压. 推荐看看:国内SDK+Eclipse+ADT下载地址 3.配置.bashrc: sudo gedit .bashrc  (在你的用户主目录下执行) export JAVA_HOME=/xx/Android/jdk1.7(jdk安装目录) expor

eclipse开发cocos2dx 3.2环境搭建之一: Android C\C++环境搭建(ndk r9d)

这几天有时间,琢磨一下cocos2dx.cocos2d家族其实挺庞大的,也有cocos2d-android这种可以直接用Java语言来开发的,但是cocos2d-android资料相对少一些,而且貌似都是几年前的.对比一下还是cocos2dx比较流行,有可以跨平台,而且既然要学就一起把c++学了. 这段时间已经用惯了idea,不太想换回去,但是查了查发现idea还不能做c++开发.国内倒是有家公司开发了一款idea的cocos插件,不过其实是cocos2dx-js,好像最新版的又加入了cocos

(1)Jenkins Linux环境下的简单搭建

(1)Jenkins Linux环境下的简单搭建 Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. ----百度百科 这是一款基于Java开发的工具.种种原因,最近刚开始接触,决定研究一下.Jenkins的搭建方法不止一种,一下就是个人总结的其中一种,文章内容比较浅显,不足之处,欢迎指正. 首先,所需要准备的工具JDK.Maven.资料上显示JDK版本最好高于1.7,并没有研究1.7以下版本,所谓"没有实际调研,就没有发言权",在此就不做过多

在Eclipse中搭建cocos2d-x的Android开发环境(免cygwin)

在突击几天学习Android开发之后,我开始转向cocos2d-x的Android开发了.由于自己以前有了解过cocos2d-x的开发,当时自己也学过不少游戏引擎,觉得cocos2d-x作为一个游戏引擎实在是比较简陋,没想到cocos2d-x现在红得发紫,这是我远远没有想到的.于是也赶赶潮流的末班车,查资料顺利地在Eclipse上搭建cocos2d-x的Androd开发环境. 原创文章,反对未声明的引用.原博客地址:http://blog.csdn.net/gamesdev/article/de