android jUnit test 进行自动化测试

一. 被test的工程:

新建一个android工程:D_session;它有一个activity:D_sessionActivity;package名:com.mysession

二.测试工程:

新建一个测试工程:D_sessionTest, 类型是android test project;

1. menifest文件:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.mysession.test"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<instrumentation

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.mysession" />

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

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

</application>

</manifest>

2. 一个base activity 来定义各种模拟测试者的动作和判断测试结果,各个测试类都继承该类:

package com.mysession.test;

import android.app.Activity;

import android.app.Instrumentation;

import android.app.Instrumentation.ActivityMonitor;

import android.content.Intent;

import android.test.InstrumentationTestCase;

import android.test.TouchUtils;

import android.widget.Button;

import android.widget.TextView;

import com.mysession.D_sessionActivity;

public class SessionActivityTest extends InstrumentationTestCase {

private Instrumentation mInstrumentation;

private ActivityMonitor mSessionMonitor;

private Activity mCurrentActivity, mSessionActivity;

private String TextNotEqual = "text not equal.";

private static final String PackageName = "com.mysession";

@Override

protected void setUp() throws Exception {

// 初始化

super.setUp();

if (mInstrumentation == null) {

mInstrumentation = getInstrumentation();

}

mSessionActivity = null;

}

@Override

protected void tearDown() throws Exception {

super.tearDown();

//释放资源

closeActivity(mSessionActivity);

mCurrentActivity = null;

}

private void closeActivity(Activity activity) {

if(activity != null){

activity.finish();

activity = null;

}

}

public void openSessionActivity() {

// 打开session activity

try {

setUp();

} catch (Exception e) {

e.printStackTrace();

}

mSessionMonitor = mInstrumentation.addMonitor(

D_sessionActivity.class.getName(), null, false);

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setClassName(PackageName, D_sessionActivity.class.getName());

mInstrumentation.startActivitySync(intent);

mSessionActivity = getInstrumentation().waitForMonitor(mSessionMonitor);

assertNotNull(mSessionActivity);

mCurrentActivity = mSessionActivity;

}

//判断text是否正确

public void assertTextEqual(int resId, String strText) {

TextView textView = (TextView) mCurrentActivity.findViewById(resId);

assertNotNull(textView);

assertEquals(TextNotEqual,

strText,

textView.getText().toString());

};

// 模拟按钮点击事件

public void clickButton(int resId){

Button button = (Button) mCurrentActivity.findViewById(resId);

assertNotNull(button);

TouchUtils.clickView(this, button);

}

}

3. 各个测试类:

测试类一:

package com.mysession.test.cases;

import com.mysession.R;

import com.mysession.test.SessionActivityTest;

public class MyCase1 extends SessionActivityTest {

public void testCase1() {

openSessionActivity();

assertTextEqual(R.id.etUrl,

"http://172.20.230.5/iportal/samples/jsapi/mobile.html");

}

public void testCase3() {

openSessionActivity();

clickButton(R.id.btnLoad);

clickButton(R.id.btnHistory);

}

}

测试类二:

package com.mysession.test.cases;

import com.mysession.R;

import com.mysession.test.SessionActivityTest;

public class MyCase2 extends SessionActivityTest{

public void testCase2() {

openSessionActivity();

clickButton(R.id.btnLoad);

}

}

三. 有些动作(如点击menu)需要通过包robotium-solo-1.8.0.jar来完成。

所以要在Build Path->Configure Build Path…中导入:robotium-solo-1.8.0.jar

程序中:

private Solo solo;

solo = new Solo(getInstrumentation(),getActivity);

就可以使用solo了, 如:

solo.clickOnMenuItem(text);

solo.goBack();

摘自fhy_2008的专栏

android jUnit test 进行自动化测试

时间: 2024-11-07 12:15:12

android jUnit test 进行自动化测试的相关文章

android junit 测试 简要步骤

android junit 测试 1.新建一个类继承TestCase这个类 2.AndroidManifest.xml, 加入<uses-library android:name="android.test.runner" /> <!-- 记住这个一要放在application外面,不然会出现配置错误 信息 -->      <instrumentation android:name="android.test.InstrumentationTe

1.Android JUnit Runner(使用AndroidStudio)

一.Android JUnit Runner介绍 1.Android JUnit Runner 1)是一个测试运行器,用于运行Junit3和Junit4的Android测试包 2)替换Instrumentation Test Runner(一个比较旧的测试运行器) 3)支持Instrumentation Test Runner所有特性,但又进行了扩展 4)保持了所有Instrumentation Test Runner的命令格式 2.继承关系 java.lang.Object android.a

android Junit demo

package com.sondon.dhjk.test; import com.sondon.dhjk.utils.LogUtil; import junit.framework.TestCase; public class Test extends TestCase { private static final String TAG = "Test"; /** * 构造函数 * @param name */ public Test(String name) { super(name

android junit 测试程序

http://blog.csdn.net/to_cm/article/details/5704783 Assert.assertEquals(2, t); 断言 android junit 测试程序,布布扣,bubuko.com

Android Junit测试框架

对应用进行单元测试: 使用Junit测试框架,是正规Android开发的必用技术.在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 1.配置指令集和函数库: (1)配置指令集,指定要测试的应用程序 需要在AndroidManifest.xml的instrumentation中增加InstrumentationTestRunner,并指定要测试的包名. AndroidManifest.xml中会添加代码: <instrumentation android:targetPacka

在Android Studio进行“简单配置”单元测试(Android Junit)

起因 在Android studio 刚出.本人就想弄单元测试,可惜当时Android studio不知道抽什么风(准确来说,应该是我不会弄而已).无法执行到相应的代码.后来今天突然自己又抽风.又想去弄一下Android junit. 本文基于做过Eclipse开发使用过Android junit,如果Eclipse的Android Junit没有使用过,就我没有说过吧! 准备环境,配置 官网Demo地址:https://github.com/googlesamples/android-test

Android JUnit Test——批量运行测试代码

写Android测试用例有三要素,一是我们用的“安卓模拟器device”(用来显示UI),二是“uiautomatorviewer.bat”(用来定位UI上的元素),三是“Robotium”中提供的类(用来与UI元素进行交互).在写好Android的测试用例后,可通过Android JUnit Test批量运行测试代码.一共分四步—— 第一步:写一个suite类(suite中包含指定的测试用例,如下把SendInfoTest类作为一个测试用例添加进了suite中,LoginTest这个类由于被注

Android Junit测试框架的配置

instrumentation指令集需要在manifest节点下 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.junittest" /> uses-library 需要在application节点下 <uses-library android:name="android.t

android JUnit 单元测试

JUnit单元测试1 配置单元测试环境,向AndroidManifest.xml中添加节点  1)添加manifest节点,com.example.junit为自己要测试的包名 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.junit"/>  2)添加application节点 <us