您的位置:首页 > 移动开发 > Android开发

Android单元测试及日志输出

2011-12-09 16:35 393 查看
一、单元测试
首先:
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 控制台右侧有另外三个图标,其对应含义如下:



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息