【Android开发-6】了解内情,我们需要一些调试和测试手段

前言:人生不可能十全十美,总会有些遗憾存在,经历过遗憾,我们才懂的什么是生活。程序也一样,追求完美,就必然会有经历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的

第二、单元测试

单元测试,演示步骤:

1.新建一个项目,比如叫TestAndroidJunit,建完目录如下:

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】了解内情,我们需要一些调试和测试手段

时间: 2024-10-10 09:36:19

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

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

打开手机点击:设置 选择:关于手机 在详情里面找到:版本号,然后不断地点击那个版本号. 然后返回一步 再选择设置里面的:辅助功能 再选择辅助功能里面的:开发者选项 进入开发者选项后,选择打开两项:一是:开启开发者选项,二是:USB调试 设置好后,手机与电脑用数据线连起来,就可以在本机查看运行Android代码的效果了. 原文地址:https://www.cnblogs.com/tszr/p/12016527.html

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

背景:Android开发,使用TotalControl控制手机进行调试. 过程:Eclipse调试一直正常,某天下午突然提示:无法启动ADB.exe,请确认是否在对应的路径下. 怀疑是自己程序写的有问题,于是把之前调试通过的程序翻出,一样无法运行. 当时郁闷,各种BAIDU,无法解决问题. 基本解决的方式是:关闭TotalControl的ADB.exe,进程,手动启动SDK下的ADB. 结果:SDK下的ADB无法启动.关闭TotalControl不能连接手机,无法调试. 不能确定原因,直接放大招

Android开发之入口Activity

原文:Android开发之入口Activity Android开发之入口Activity Adnroid App是如何确定入口Activity的? 难道就因为class的类名叫MainActivity,布局文件叫activity_main.xml? 如果这样认为,就大错特错了. 之所以能够确定入口Activity,是因为在应用的清单文件中有所配置,系统会根据应用的清单文件(AndroidManifest.xml)来确立. 如何确立,标志是什么? 我们来看一下清单文件,便一目了然: 对了,系统能够

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

Android开发系列之SQLite

上篇博客提到过SQLite.它是嵌入式数据库,因为其轻巧但功能强大,被广泛的用于嵌入式设备其中.后来在智能手机.平板流行之后,它作为文件型数据库,差点儿成为了智能设备单机数据库的必选,能够随着安卓app打包到apk文件其中. SQLite的官方站点是http://www.sqlite.org/,能够随意下载,上面也有详尽的文档能够參考,这篇博客重点关注SQLite在Android开发中怎样使用. 在Android开发中.推荐建立一个类继承自SQLiteOpenHelper来创建数据库操作类,比方

Android开发之手把手教你写ButterKnife框架(二)

欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开发之手把手教你写ButterKnife框架(一)我们讲了ButterKnife是什么.ButterKnife的作用和功能介绍以及ButterKnife的实现原理. 本篇博客主要讲在android studio中如何使用apt. 一.新建个项目, 然后创建一个module名叫processor 新建m

Android开发之实现两个手机之间的通讯

欢迎转载,转载请注明出处:http://blog.csdn.net/dmk877/article/details/51685656 Hello,大家好,今天又来写博客了,项目终于搞完了最近又有时间写写博客了.在上上篇博客中我们学习了Android中网络通讯,并用Socket实现了Android客户端与服务器的通讯,那么这一篇将进一步来完善这一功能,就是要实现两个android手机端的通讯. 如有谬误,欢迎批评指正,如有疑问欢迎留言 通过本篇博客你将学到以下知识点 ①Socket的用法 ②如何实现

搭建Android开发环境

通过学习Android系统基本构架和Android移植的工作后,我们就要学习如何搭建Android开发环境了. 搭建Android底层开发环境,主要包括:Android应用程序开发环境.Android NDK开发环境.交叉编译环境. 底层环境的开发,需要配置Linux的驱动开发环境,Android应用程序和Android NDK的开发环境,还需要辅助工具测试Linux驱动及调试开发板,本书作者建议使用Ubuntu Linux10.04或以上版本作为Linux驱动的平台.底层环境开发需要的工具有:

这些小工具让你的Android 开发更高效

在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vysor Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用. Vector Asset Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset:它可以帮助你在Android 项目中添加Materia