JUnit单元测试

简介:

在我们开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得各位重要

是企业级开发的常用手段,学会JUnit可以加快应用的开发周期,可以理解为一种测试的工具吧

 

 

废话不多说,下面就介绍一下如何使用JUnit进行单元测试

建立JUnit测试的两种方法
一.直接在需要被测试的工程中新建测试类

1.先在androidManifest.xml文件中添加以下代码:

                 写在application标签里哦,别写错地方,写到activity中哦!     <uses-library android:name="android.test.runner"/>

   接着在manifest标签,application后面写上以下代码:

    1. <instrumentation android:name="android.test.InstrumentationTestRunner"  
    2. android:targetPackage="com.jay.junitest"  
    3. android:label="Demo for JUnittest"/>



     name那是固定写法,targetPackage是要测试的工程,既包,可以直接复制app manifest中的  package="com.jay.junitest"

    label只是测试的名称,可写可不写

     

     

    2.新建一个测试测试类,继承AndroidTestCase类,然后写你在类中写下你要测试的方法,比如测试一个加法的方法:testadd()就是在需要测试的方法

       前加上test即可

     

     

    3.点击右面的大纲视图,选择要测试的方法,右键,run as --->Android JUnit test---->稍等片刻即可,接着查看测试后的信息即可

     

     

    实例演示:

    注意:以下步骤是在配置好测试环境的情况下进行的,即前面的androidManifest.xml的配置

    1.先创建一个需要被我们测试的类:(代码比较简单,方便理解)

    demo.java:

     

    代码:


      1. package com.jay.testmodel;  
      2.   
      3. public class demo {  
      4. //这里定义一个减法函数,我们等下再测试方法中,判断返回的结果是否与我们预想的结果一样  
      5. public int sub(int a,int b) {  
      6. return a - b;  
      7.     }  
      8.       
      9. //这里定义一个截取字符串的方法,我们再测试类中传入一个空值,查看测试的结果  
      10. public void subString(String string) {  
      11. 3);  
      12.     }  
      13. }



       

      2.创建一个测试类

      这个类要继承AndroidTestCase类


      Android 单元测试忽略实体文件 安卓单元测试的步骤_junit

       

      创建后,一个好的习惯是每个测试方法都抛出异常:throws Exception

      代码实例:demotest.java


      1. package com.jay.test;  
      2.   
      3. import junit.framework.Assert;  
      4.   
      5. import com.jay.testmodel.demo;  
      6.   
      7. import android.test.AndroidTestCase;  
      8.   
      9. public class demotest extends AndroidTestCase {  
      10. public void testsub()throws Exception{  
      11. new demo();  
      12. int equals = de.sub(3, 1);  
      13. //这里用到的了断言,判断是否与我们断定给的值相等  
      14. 2, equals);  
      15.     }  
      16.       
      17. public void testsubString()throws Exception {  
      18. new demo();  
      19. null);  
      20.     }  
      21. }


      ps:在testsub方法中我们使用到了断言,部分同学可能听过这东西,知道这个是断言,不过仅仅是知道有这东东,但是却不知道是拿来做什么的,这里科普以下:

      在我们写代码的时候,我们总会习惯性地给出一些假设,断言就是在代码中捕捉这些假设,是一种布尔表达式

      通常我们在测试的时候启用断言,而部署时禁用断言,程序投入运行后,最终用户在遇到问题是可以重新启用断言

                                                                                                                                                              ---------摘抄自度娘

       

      简单来说的话,就是我们不打算通过捕获异常来处理错误,这个时候用到断言:

      Assert.assertEquals(2,equals)        这是一个断言语句

      如果2 == equals的话,结果为真,程序继续执行,否则程序马上结束

       

      这里无需纠结,简单理解成判断是否相等即可,关于断言的详细内容可自己谷歌或者度娘

       

       

      3.通过大纲视图运行测试方法:


      Android 单元测试忽略实体文件 安卓单元测试的步骤_异常_02

      右键:

      Android 单元测试忽略实体文件 安卓单元测试的步骤_单元测试_03

       

       

      运行后稍等片刻即可:

      左边会出现这个框框:


      Android 单元测试忽略实体文件 安卓单元测试的步骤_异常_04

       

       

      绿色表示测试通过,在代码中我们测试的时3-2是否 == 1,所以结果肯定是通过的,如果我们把assertequals()中的1改为5的话


      会出现以下结果:


      Android 单元测试忽略实体文件 安卓单元测试的步骤_框架_05

       

      红色说明测试没通过,点击下面的错误项可以定位到出错的代码行

       


      Android 单元测试忽略实体文件 安卓单元测试的步骤_Android 单元测试忽略实体文件_06

       

       

       

      接着我们测试第二个截取字符串的方法,运行结果:同样是红色


      Android 单元测试忽略实体文件 安卓单元测试的步骤_Android 单元测试忽略实体文件_07

       

       

      虽然图片很多,但是真的很简单,各位读者可以按照这个流程试试,动手才是掌握知识的最快途径!!!

       

       

      二.专门创建一个用于测试的工程(!!推荐,这样可以降低代码的耦合度)

      流程:1.新建工程,选择new ---- >   other  ---->android Test Project


      Android 单元测试忽略实体文件 安卓单元测试的步骤_框架_08

       

      2.选择要测试的工程:


      Android 单元测试忽略实体文件 安卓单元测试的步骤_单元测试_09

       

       

      3.接着和第一种建立测试类的方法是一样的,这里比较简单就略过了

      PS:如果使用这种方法的话,androidManifest.xml中已经自动配置好相关的参数,无需在进行配置,比较方便