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();

更多相关文章

  1. Andriod使用Intent实现拨号
  2. zoomable android textview
  3. android studio使用espresso做自动化测试
  4. android jUnit test 进行自动化测试
  5. TextView IME option
  6. [android]android自动化测试十之单元测试实例
  7. Android之permission权限列表
  8. Android:定时的实现
  9. Android自动解除系统锁屏

随机推荐

  1. 个人建网站服务器选择分享:云虚拟主机和云
  2. element ui级联选择器--懒加载数据
  3. element ui级联选择器 通过axios获取数据
  4. webpack 中使用 axios 方法总结及初识 vu
  5. 学绘画该如何入手?绘画入门教程零基础
  6. $.ajax同步/异步(async:false/true)解析
  7. element ui级联选择器--表单验证
  8. 如何临摹动漫人物?临摹绘画人物动漫教学!
  9. Ubuntu20.04服务器+Anaconda上创建Python
  10. element ui的form表单,一个input的值随着