Android Instrumentation 简介

article/2025/9/21 1:23:52

Instrumentation 简介


APIs && Source code

  • 官方APIs地址(需要翻墙)
  • Source code

Instrumentation 特点

  • 该框架基于JUnit,因此既可以直接使用Junit 进行测试,也可以使用Instrumentation 来测试Android 组件
  • 其为Android 应用的每种组件提供了测试基类
  • 可以在Eclipse 中方便地创建Android Test Project,并将Test Case直接以Android JUnit的方式运行

Instrumentation 简单例子

  1. 新建一个Instrumentation的Android项目
  2. activity_main.xml内容为:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.xuxu.unittest.MainActivity" ><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:text="Button" /></RelativeLayout>
    

    界面效果为:

    效果图

  3. 配置AndroidManifest.xml

    • 添加instrumentation标签:

      <instrumentation
      android:name="android.test.InstrumentationTestRunner"
      android:targetPackage="com.xuxu.unittest" >
      </instrumentation>
    • 在application标签里面添加uses-library

      <uses-library android:name="android.test.runner" /> 
    • 文件内容截图:

      AndroidManiest 内容截图

  4. 完成MainActivity,实现点击Button按钮之后TextView的内容由 Hello world! 变为 Hello android!

    实现代码如下:

    package com.xuxu.unittest;import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;public class MainActivity extends Activity {private TextView textView;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.textView);button = (Button) findViewById(R.id.button);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {textView.setText("Hello android!");}});}
    }
  5. 对MainActivity进行测试

    • 建立测试类,可以单独建立一个对应的Android Test Project,也可以就在原项目里面新建测试类,这里选择第二种:
      1. 右键点击待测项目 > New > Source Folder,文件夹名tests
      2. 右键新建好的tests文件夹 > New > Package, 包名取为待测包名.test, 这里取为com.xuxu.unittest.test
      3. 在包里面新建一个Class:
        Name:MainActivityTest
        Superclass:android.test.ActivityInstrumentationTestCase2
    • 完成MainActivityTest

      package com.xuxu.unittest.test;import com.xuxu.unittest.MainActivity;import android.test.ActivityInstrumentationTestCase2;
      import android.widget.Button;
      import android.widget.TextView;public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {private MainActivity mActivity;
      private TextView textView;
      private Button button;public MainActivityTest() {super(MainActivity.class);
      }@Override
      protected void setUp() throws Exception {super.setUp();mActivity = getActivity();textView = (TextView) mActivity.findViewById(com.xuxu.unittest.R.id.textView);button = (Button) mActivity.findViewById(com.xuxu.unittest.R.id.button);
      }//测试初始化条件
      public void testInit() {assertEquals("Hello world!", textView.getText().toString());
      }//测试点击Button之后TextView的值
      public void testButton() throws Exception {//在UI线程中操作mActivity.runOnUiThread(new Runnable() {@Overridepublic void run() {button.performClick();}});Thread.sleep(500); //加个延时,否则TextView内容还为更改,就已经做断言了assertEquals("Hello android!", textView.getText().toString());
      }
      }
      
    • 运行测试。右键项目,选择Run As Android JUnit

      测试结果


http://chatgpt.dhexx.cn/article/c8sVT9Hw.shtml

相关文章

冲突域和广播域?

如何理解冲突域和广播域&#xff1f; 冲突域&#xff1a; 【定义】在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只能有一台设备发送信息的范围。 【分层】基于OSI的第一层物理层 【设备】第二层设备能隔离冲突域&#xff0c;比如Switch。交…

广播域与冲突域

广播域与冲突域 一个集线器&#xff08;中继器&#xff09;连接的网络成为冲突域&#xff0c;因为每台主机都连接在了同一条线路上&#xff0c;所以传送信息时会冲突。 冲突域是基于第一层(物理层) 而交换机的本质是一个多借口网桥&#xff0c;就是说由交换机组成的网络中&…

冲突域广播域

网络互连设备可以将网络划分为不同的冲突域、广播域。但是&#xff0c;由于不同的网络互连设备可能工作在OSI模型的不同层次上。因此&#xff0c;它们划分冲突域、广播域的效果也就各不相同。如中继器工作在物理层&#xff0c;网桥和交换机工作在数据链路层&#xff0c;路由器工…

广播域和冲突域问题

该图中有几个冲突域几个广播域&#xff1f; 解答&#xff1a; 1、两个广播域&#xff0c;七个冲突域。 这样的&#xff1a;集线器属于物理层&#xff0c;所有接口同属于一个冲突域、一个广播域&#xff1b;交换机属于数据链路层&#xff0c;每个接口是一个单独的冲突域…

冲突域和碰撞域的理解

如何理解冲突域和广播域&#xff1f; 转载 冲突域&#xff1a; 【定义】在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只能有一台设备发送信息的范围。 【分层】基于OSI的第一层物理层 【设备】第二层设备能隔离冲突域&#xff0c;比如Swi…

如何计算冲突域和广播域-图解分析

如何理解冲突域和广播域?冲突域:【定义】在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间内只能有一台设备发送信息的范围。【分层】基于OSI的第一层(数据链路层)物理层【设备】第二层设备能隔离冲突域,比如Switch。交换机能缩小冲突域的范围,交…

有关冲突域的定义

一开始学习网络的时候&#xff0c;对于冲突域和广播域的理解仅仅是从设备上进行理解的&#xff0c;即集线器是一个冲突域&#xff0c;交换机能够分离冲突域&#xff0c;不能够分离广播域&#xff0c;路由器可以分离组播域。至于冲突域到底是什么&#xff0c;怎么样定义的&#…

如何辨别数清冲突域和广播域

1、首先&#xff0c;须知第一层不能隔离冲突域和广播域。例如集线器或者直接连PC 2、其次&#xff0c;第二层可以隔离冲突域&#xff0c;但不能隔离广播域。例如&#xff0c;二层交换机 3、接着&#xff0c;第三层可以隔离广播域&#xff0c;默认隔离冲突域&#xff0c;例如&…

详解广播域和冲突域的区别

总览 1、广播域可以跨网段&#xff0c;而冲突域只是发生的同一个网段的。以太网中&#xff0c;冲突域是由hub组织的。一个hub就是一个冲突域。交换机的每个端口都是一个冲突域。网段&#xff0c;又叫潜在冲突域。 2、冲突域在同一个冲突域中的每一个节点都能收到所有被发送的…

冲突域

一、冲突域 一个站点向另一个站点发出信号&#xff0c;除目的站点外&#xff0c;有多少站点能收到这个信息&#xff0c;这些站点就构成一个冲突域。在同一个冲突域中的每个节点都能收到所有被发送的帧&#xff0c;冲突域是基于第一层&#xff08;物理层&#xff09;。 传统共享…

collision domain - 冲突域

英文&#xff1a; Collision Domain 中文&#xff1a; 冲突域 介绍&#xff1a; 不同主机或设备同时发出的帧可能会互相冲突的网络区域。一条导线上所有工作站的集合&#xff0c;或一个物理网段上所有节点的集合&#xff0c;或以太网上竞争同一带宽的节点的集合都是一个冲突域…

Java 程序员开发常用的工具

1、常用开发工具 2、常用接口测试工具 3、常用远程连接工具 4、一些其他常用工具 5、总结 1、常用开发工具 作为一名Java程序开发人员&#xff0c;可以的选择集成开发环境IDE&#xff08;Integrated Development Environment&#xff09;非常多&#xff0c;得益于Java是一门开…

java编程软件(一) idea

前段时间&#xff0c;有个学弟问我OJ的题目&#xff0c;本来这是一件很正常的事情。 主要是关注点不是那道OJ题&#xff0c;而是他编程所使用的软件———blueJ。既熟悉又陌生的名字。 BlueJ在编写的过程是很不方便的&#xff0c;当然&#xff0c;在类与类之间的关系倒是能很好…

学java编程需要安装什么软件?

近几年学编程的同学或者想学习编程的同学越来越多&#xff0c;提到编程java语言肯定是里面的佼佼者&#xff0c;今天小千就来给大家介绍一下学Java编程都需要安装什么软件&#xff0c;自学的同学有福了。 1.java环境 想要从事Java开发&#xff0c;那么Java运行环境肯定是你首先…

Java编写软件

资源&#xff1a;UIControlsJavaFX.exe 1. 测试环境 JRE7U21 Win7 2. 如果JRE 6运行不成功则说明不支持JavaFX runtime 3. 双击UIControlsJavaFX.jar可以直接运行 4. 右键用rar软件打开UIControlsJavaFX.jar可以查看源码和JavaDoc UIControlsJavaFX_V2.exe 版本2&#xff…

5款新手常用的java编程工具,有你正在用的吗?

新手如果想成为一名合格的java程序员工程师&#xff0c;不但要熟练使用各种框架&#xff0c;而且还有明白框架是如何实现的各种原理&#xff0c;例如像jvm虚拟机的原理&#xff0c;优化&#xff0c;熟练掌握jvm能让你写出性能更好的代码&#xff0c;还有池技术&#xff0c;对象…

推荐5款好用的Java软件,初学者必看

“工欲善其事必先利其器”&#xff0c;想要学好Java&#xff0c;除了要有好的学习资源之外&#xff0c;还要有一套适合自己的Java软件&#xff0c;好的软件能极大提高你的学习和工作效率。那么&#xff0c;学Java用什么软件好呢&#xff1f;下面小千为大家推荐5款好用的Java软件…

恶意流量监测开源系统:Maltrail

20210309 - 0. 引言 一般来说&#xff0c;通过IDS来监测一些攻击流量&#xff0c;或者说恶意流量也是可以的&#xff1b;但是现在看到的这个开源软件[1]是专门利用IOC来识别恶意流量&#xff1b;具体细节我没有深入去研究&#xff0c;例如流量捕获部分到底是什么引擎来启动的…

网站流量日志分析系统(一)概念

网站流量日志分析系统&#xff08;一&#xff09;概念 网站流量日志分析系统&#xff1a;点击流数据模型 点击流:是指用户持续访问浏览网站的轨迹。 点击流数据是由散点状的点击日志数据梳理所得。点击流数据在数据建模时存在俩张模型表 Pageviews 和visits 1.首先有一张&…

CTF流量分析常见题型(二)-USB流量

0x00 前言 在学习Wireshark常见使用时&#xff0c;对常见CTF流量分析题型和铁人三项流量分析题的部分问题进行了简单总结。由于篇幅过长&#xff0c;于是另起一篇总结USB流量包分析&#xff0c;包括键盘流量和鼠标流量。 0x01 USB流量包分析 USB流量指的是USB设备接口的流量…