Android单元测试及日志输出

来源:互联网 发布:桌面高考倒计时软件 编辑:程序博客网 时间:2024/05/19 16:04

一、单元测试

首先:

1.    Menifest.xml中加入:

<application>中加入:

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

该行代码必须位于<application> 元素之内,与 <activity> 元素平级。

<application>外面加入:

<instrumentationandroid:name="android.test.InstrumentationTestRunner"android:targetPackage="name.feisky.android.test"

android:label="Test for my app"/>

上面 targetPackage 指定的包要和应用的package 相同 。 如果不相同 , 会出现找不到单

元测试用例的错误。

2.    编写单元测试代码:必须继承自AndroidTestCase类

package name.feisky.android.test;  importandroid.test.AndroidTestCase;import junit.framework.Assert;  public class MyTest extendsAndroidTestCase {private static final StringTag="MyTest";  public void testSave() throwsThrowable{int i=4+8;Assert.assertEquals(5,i);}  public void testSomethingElse()throws Throwable {Assert.assertTrue(1 + 1 == 12);}  }


初学者常犯的错误时为测试方法添加参数。一定要注意测试方法是不需要传入参数的 。

如果测试方法内部遇到异常 , 建议直接抛出 , 而不要捕获异常 。 异常抛出后会被测试框架获

取,之后在控制台显示出来,方便我们了解异常信息。

Asser t 类在此的作用是判断所得到的结果与期望值的关系。这里判断 i 是否等于 5 ; 如

果相等则通过,不相等,则抛出异常。

3、执行测试

打开outline如下图:


现在可以运行测试用例了。右键单击,之后【 Run As 】->【 Android JUnit Test 】,

运行完成,我们观察 Junit 的控制台。结果如下图。


如上图,结果条显示为红色,说明测试没有通过。

下面将测试用例中的代码修改为“ Assert. assertEquals ( 12 , i); ” 之后再次运行。


二、             日志输出

Console 控制台只能输出应用安装的信息。比如在程序中添加一 行

System.out.println( “ sharpandroid ” );

如果在 Eclipse 中进行 Java 程序开发,该语句会在 Console 中打印。但我们开发 Android应用时,该语句在 Console 控制台中并不会打印出字符串。该字符串会在 LogCat 中打印出来。在 Android 程序中进行信息输出,一般采用 android.util.Log 类的静态方法就可以实现。Log 类所输出的日志的内容从少到多分别是 ERROR 、 WARN 、 INFO 、 DEBUG 、VERBOSE ,对应五种不同类型的首字母, 分别对应有 Log.e()、 Log.w() 、 Log.i() 、 Log.d() 、 Log.v() 五种静态方法,使用不同的方法输出的信息的颜色各不相同,并且如下图,在 Logcat 控制台右上侧有相应的按钮,点击每个按钮,可以过滤出其自身类型及其右侧类型的日志信息。 如点击 i按钮 , 会显示 I 、 W 、 E 三种类型的信息 , 而 V 、 D 类型的信息则不会

显示。

当我们执行某人程序时,logcat会输出好多信息,而要找出我们打印的东西很难,所以在这里添加一个过滤器!!

点击logcat右上角的+号按钮,添加如下信息:比如我要打印Log. i ( “MyTest” , "i = " + i);


下面介绍下 LogCat 管理器中几个按钮的功能。


点击上图中的“ V ”、 “ D ” 、 “ I ” 、 “ W ” 、 “ E ” ,可以过滤出当前选项卡中的对应级别的信息 。另外, LogCat 控制台右侧有另外三个图标,其对应含义如下: