前言:人生不可能十全十美,总会有些遗憾存在,经历过遗憾,我们才懂的什么是生活。

程序也一样。追求完美,就必定会有经历bug存在的时候。

经历过不断的bug磨练。我们技术才会不断的成长。对于调试bug,通过一些方法和手段就会发现它原来如此。

当一切恍然大悟时。就会发现缺陷也是一种美,由于它让你更了解自己。或者说让你更加了解你的程序。

第一、打印输出调试

Android程序在虚拟机执行时,我们假设通过System.out.print(),输出调试信息。我们在控制台是看不到的。所以我们有时候调试,后台要输出一些东西,该怎么办。没关系,Android提供了一个强大的android.util.Log 类. 我们能够运用例如以下:

Log.v("verbose","具体信息级别--1级");

Log.d("debug","调试信息级别--2级");

Log.i("info","提示信息级别--3级");

Log.w("warn","警告信息级别--4级");

Log.e("error","错误信息级别--5级");

Log中的第一个參数:代表一个标签Tag说明 。第二个參数:代表调试信息



程序执行后,会在Eclipse界面中的LogCat输出例如以下内容:

从上面能够看出:不同级别,颜色代表也不同,这样就易于调试观察了。假设界面有非常多类型同样的调试日志信息,左边栏点绿色的+。还能够加入过滤器,仅仅显示某标签Tag的调试日志,如以下仅仅显示Tag标签为debug的

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl2YW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

第二、单元測试

单元測试,演示步骤:

1.新建一个项目,比方叫TestAndroidJunit,建完文件夹例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWl2YW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

2.一个项目中一般有多个业务功能类,对于业务功能类,有时候一个团队。个人弄完须要验证正确后。才提交到svn中。

这时候单元測试调bug就非常重要了。

右键src,新建class类MyFunction例如以下:

package com.wyz.myfunction;

import android.util.Log;

public class MyFunction {

	public void SayHello(String str)
{ Log.d("SayHello",str); } public int Add(int a,int b)
{
return a+b;
}
}

3.在TestAndroidJunit中AndroidManifest.xml的文件增加例如以下内容:

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

<instrumentation  

        android:name="android.test.InstrumentationTestRunner"  

        android:targetPackage="com.wyz.testandroidjunit" />

记住加的位置例如以下:

<?

xml version="1.0" encoding="utf-8"?

>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wyz.testandroidjunit"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" > <activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="android.test.runner" />
</application> <instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.wyz.testandroidjunit" />
</manifest>

注:上面的<instrumentation>中的android:targetPackage属性值设置需跟本项目的包名一致,即

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.wyz.testandroidjunit"

    android:versionCode="1"

    android:versionName="1.0" >

中的package="com.wyz.testandroidjunit"

4.右键项目中src目录新建一个測试单元类,设置例如以下:

点Browser浏览继承类AndroidTestCase

5.单元測试类中的内容编写例如以下,主要是对项目中类MyFunction的方法測试:

package com.wyz.testunit;

import junit.framework.Assert;

import com.wyz.myfunction.MyFunction;

import android.test.AndroidTestCase;
import android.util.Log; public class TestMyFunction extends AndroidTestCase { public void testSayHello() throws Exception
{
MyFunction myFunction = new MyFunction();
myFunction.SayHello(null); } public void testAdd() throws Exception
{
MyFunction myFunction = new MyFunction();
int c = myFunction.Add(3, 4);
Log.d("add", String.valueOf(c));
Assert.assertEquals(7, c);
} }

6.在单元測试类写好上述代码后,我们就能够对MyFunction类中的两个方法进行測试,找到Outline视图:

假设我们要測试testAdd(),我们仅仅需在Outline中找到相应的testAdd()。然后右击。Run As->Android Junit Test,

结果假设正确。显演示样例如以下:

假设要显示错误,仅仅需把断言中的7改成其它数字就能够演示出错误了。

注:上面必须先执行安卓模拟器,然后执行单元測试模块。这样单元測试模块才干够部署安装。

调试和測试方法非常多,还实用写入文件。真机调试等。很多东西还得一步步实践,才干认知!

【Android开发-6】了解内情,我们须要一些调试和測试手段的更多相关文章

  1. android手机安全性測试手段

    android手机安全性測试手段 罗列一下自己经常使用的android手机安全性測试攻击手段: 1. fiddler和tcpdump+wireshark抓包分析,模拟改动http请求參数,检验漏洞 2 ...

  2. 吴裕雄--天生自然Android开发学习:魅蓝3开启USB调试

    打开手机点击:设置 选择:关于手机 在详情里面找到:版本号,然后不断地点击那个版本号. 然后返回一步 再选择设置里面的:辅助功能 再选择辅助功能里面的:开发者选项 进入开发者选项后,选择打开两项:一是 ...

  3. Android JNI用于驱动測试

    硬件平台:S3C6410 操作系统:Ubuntu.windows 板子系统:Android 开发工具:jdk.ndk,eclipse 本次測试从linux内核模块编译開始.以S3C6410的pwm驱动 ...

  4. MVP模式在Android开发中的应用

    一.MVP介绍      随着UI创建技术的功能日益增强,UI层也履行着越来越多的职责.为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互.同一 ...

  5. Android开发工具综述,开发人员必备工具

    安卓开发工具汇总.开发者必备.安卓开发过程中须要用到各种工具,作为一名安卓开发者,有木有感到亚历山大,那么多工具! 今天给大家汇总了一下安卓开发工具,安卓开发者必备利器. 1.Draw 9-Patch ...

  6. Androidproject师进阶之路 :《Android开发进阶:从小工到专家》上市啦!

    封面 文件夹1 文件夹2 - 当当购买链接 - 京东购买链接 为什么写这本书 写这本书的念头由来已久了. 或许是从我打算写<Android源代码设计模式解析与实战>那时起就萌生了这个念头, ...

  7. Android开发使用TotalControl调试遇到的问题(备注)

    背景:Android开发,使用TotalControl控制手机进行调试. 过程:Eclipse调试一直正常,某天下午突然提示:无法启动ADB.exe,请确认是否在对应的路径下. 怀疑是自己程序写的有问 ...

  8. Android单元測试之JUnit

    随着近期几年測试方面的工作慢慢火热起来.常常看见有招聘測试project师的招聘信息.在Java中有单元測试这么一个JUnit 方式,Android眼下主要编写的语言是Java,所以在Android开 ...

  9. Android Gradle Plugin指南(四)——測试

    原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing 5.Testing(測试) 构建一个測试 ...

随机推荐

  1. kubernetes 安装(全)

    #http://blog.csdn.net/zhuchuangang/article/details/76572157#https://kubernetes.io/docs/setup/indepen ...

  2. EntityFramework之多对多关系(四)

    上篇介绍了一对多关系,下面介绍下多对多关系代码编写. 1.新建model实体,User是用户类,Role是角色类,由于是多对多关系,必须得有一个中间类,所以产生了UserRole类 public cl ...

  3. 让指定JS出现智能提示

    大家都知道,在Asp.net MVC中,引入了CSS,JS捆绑优化这个好东东.但是,你会发现,运用了这个捆绑优化后,或者引用了模板后,在模板中引用了JS的文件后,在页面中编辑JS文件后,却不能利索地出 ...

  4. (21)C#VS快捷键

    1.移动光标 ctrl+ 右键:按单词移动 home:移动到一行得开头 ,end:移动到一行得末尾 ctrl+home:移动到文本得第一行初始位置,ctrl+end文本最末尾 pageDn:往文件下面 ...

  5. Linux的软连接和硬连接

    1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接] 硬连接指通过索引 ...

  6. 【NOI2016】优秀的拆分

    题目描述 如果一个字符串可以被拆分为 $AABB$ 的形式,其中 $A$ 和 $B$ 是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串 aabaabaa,如果令 $A = \m ...

  7. OC语言基础之代码的封装

    1.封装的注意点 1: // 成员变量尽量不要用@public 2: // @public 3: int age; 1: //@public 2: // 只读(readonly):只允许外界访问我的n ...

  8. SQL 存储过程入门(事务)

    本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果 ...

  9. 编译qt提示找不到gmake

    转:http://wuyuans.com/2012/11/gmake-not-found/ 在用debian编译qt4.5的时候提示gmake: not found,gmake是什么东西,用aptit ...

  10. onWebView检查网页中文

    问题:要检查网页中的一段文本: 开始我是这样写的: private final static String SPECIFIED_TEXT = "这个是一段中文"; onWebVie ...