Android应用开发中单元测试分析

 更新时间:2015年12月23日 09:48:11   投稿:lijiao  
这篇文章主要介绍了Android应用开发中单元测试的作用,以及何为单元测试,深入学习Android应用开发中单元测试,需要的朋友可以参考下

本文主要和大家分享如何在Android应用开发过程中如何进行单元测试,个人在做项目的过程中,觉得单元测试很有必要,以保证我们编写程序的正确性。下面我们先大概了解下单元测试,以及单元测试的作用。
       单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。
       其实我们每天都在做单元测试。你写了一个函数,除了极简单的外,总是要执行一下,看看功能是否正常,有时还要想办法输出些数据,如弹出信息窗口什么的,这,也是单元测试,把这种单元测试称为临时单元测试。只进行了临时单元测试的软件,针对代码的测试很不完整,代码覆盖率要超过70%都很困难,未覆盖的代码可能遗留大量的细小的错误,这些错误还会互相影响,当BUG暴露出来的时候难于调试,大幅度提高后期测试和维护成本,也降低了开发商的竞争力。可以说,进行充分的单元测试,是提高软件质量,降低开发成本的必由之路。
  对于程序员来说,如果养成了对自己写的代码进行单元测试的习惯,不但可以写出高质量的代码,而且还能提高编程水平。
  要进行充分的单元测试,应专门编写测试代码,并与产品代码隔离。我认为,比较简单的办法是为产品工程建立对应的测试工程,为每个类建立对应的测试类,为每个函数(很简单的除外)建立测试函数。
在Android应用开发中有两种方式可以进行单元测试,下面分别展示这两种单元测试的方法:

单元测试方式一[基于应用的工程上进行单元测试]

根据上面的程序代码结构图,例如我们要测试包 com.andyidea.demo 包中的 JUnitService.java 中的某个方法的正确性。例如该对象中有个 add方法,计算两个整型数据的和

package com.andyidea.demo; 
 
public class JUnitService { 
   
  public int add(int a, int b){ 
    return a+b; 
  } 
 
} 

然后我们在MyJnuitTest.java中编写单元测试代码,[注意:该测试类一定要继承 AndroidTestCase类] 以验证程序结果是否是我们所期望的一致

package com.andyidea.jnuit; 
 
import junit.framework.Assert; 
import android.test.AndroidTestCase; 
 
import com.andyidea.demo.JUnitService; 
 
public class MyJnuitTest extends AndroidTestCase { 
   
  public void testAdd() throws Exception{ 
    JUnitService js = new JUnitService(); 
    int sum = js.add(1, 2); 
     
    Assert.assertEquals(3, sum); 
  } 
 
} 

同时我们还需要在 Manifest.xml 清单配置文件中配置下:以红色标志出来需要配置的地方。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  package="com.andyidea.demo" 
  android:versionCode="1" 
  android:versionName="1.0" > 
   
 <span style="color:#ff0000;"> <!-- 代表把单元测试框架中的一些依赖库引入进来 --> 
  <uses-sdk android:minSdkVersion="8" /></span> 
 
  <application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <uses-library android:name="android.test.runner" /> 
    <activity 
      android:name="com.andyidea.demo.JUnitTestDemoActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
 
        <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
    </activity> 
  </application> 
   
<span style="color:#ff0000;">  <!-- 代表配置单元测试框架的启动装置,启动装置有好几个类,可以选择,一般情况下我们使用上面这个。 
     targetPackage与上面的package相同,代表单元测试框架和当前应用是处于同一个进程中 --> 
  <instrumentation 
    android:name="android.test.InstrumentationTestRunner" 
    android:label="Test for my app" 
    android:targetPackage="com.andyidea.demo"/></span> 
</manifest> 

最后,打开eclipse中的outline窗口,其中会显示单元测试类的所有的方法然后想要测试哪个方法,则在哪个测试方法上右键鼠标,选择Run As,然后再选择Android JUnit Test即可,如果是正常的,则会如下:

如果有异常或者错误,则会出现如下情况:

单元测试方式二:
其实这种方式更加简单,这种方式是单独创建一个单元测试的工程来进行测试。即创建一个 Android Test Project ,然后选择需要单元测试的项目就OK了,通过这种方式进行单元测试的话就不用进行上面的配置,其实创建这种工程的时候,默认已经帮我们配置好了,如何进行测试和上面的方式一样,在这里就不详细讲解了。

以上就是针对Android应用开发中单元测试进行的详细介绍,希望对大家的学习有所帮助。

相关文章

  • 如何使用Flutter实现生成二维码

    如何使用Flutter实现生成二维码

    这篇文章主要为大家详细介绍了如何使用 Flutter 创建二维码,并实现一些常见的自定义选项,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • Flutter自定义下拉刷新时的loading样式的方法详解

    Flutter自定义下拉刷新时的loading样式的方法详解

    Flutter中的下拉刷新,我们通常RefreshIndicator,可以通过color或strokeWidth设置下拉刷新的颜色粗细等样式,但如果要自定义自己的widget,RefreshIndicator并没有暴露出对应的属性,那如何修改呢,文中给大家介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • Android中LayoutInflater.inflater()的正确打开方式

    Android中LayoutInflater.inflater()的正确打开方式

    这篇文章主要给大家介绍了关于Android中LayoutInflater.inflater()的正确打开方式,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-12-12
  • android编程实现系统图片剪裁的方法

    android编程实现系统图片剪裁的方法

    这篇文章主要介绍了android编程实现系统图片剪裁的方法,涉及Android针对图片的获取、修改、保存等操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Android高级动画篇之SVG矢量动画范例

    Android高级动画篇之SVG矢量动画范例

    矢量动画即是在计算机中使用数学方程来描述屏幕上复杂的曲线,利用图形的抽象运动特征来记录变化的画面信息的动画,本篇带你了解在Android中的矢量动画
    2021-11-11
  • Android App中使用SurfaceView制作多线程动画的实例讲解

    Android App中使用SurfaceView制作多线程动画的实例讲解

    这篇文章主要介绍了Android App中使用SurfaceView制作多线程动画的实例讲解,SurfaceView经常被用来制作游戏中的动画,不过同时要注意画面闪烁的问题,需要的朋友可以参考下
    2016-04-04
  • 解决Android软键盘弹出覆盖h5页面输入框问题

    解决Android软键盘弹出覆盖h5页面输入框问题

    之前我们在使用vue进行 h5 表单录入的过程中,遇到了Android软键盘弹出,覆盖 h5页面 输入框 问题,在此进行回顾并分享给大家,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • Kotlin实现图片选择器的关键技术点总结

    Kotlin实现图片选择器的关键技术点总结

    这篇文章主要给大家介绍了关于Kotlin实现图片选择器的一些关键技术点,这是一个我在学习Kotlin过程中的一个练手项目,非常适合学习Kotlin的时候参考,需要的朋友可以参考下
    2021-09-09
  • Flutter与WebView通信方案示例详解

    Flutter与WebView通信方案示例详解

    这篇文章主要为大家介绍了Flutter与WebView通信方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • AndroidStudio插件GsonFormat之Json快速转换JavaBean教程

    AndroidStudio插件GsonFormat之Json快速转换JavaBean教程

    这篇文章主要介绍了AndroidStudio插件GsonFormat之Json快速转换JavaBean教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论