Android下junit单元测试、logCat的使用

 Android下junit单元测试
  软件测试小知识:
根据测试是否知道源代码:
黑盒测试:只关心程序执行的过程和结果
白盒测试:根据源代码写测试方法或者测试用例
根据测试的粒度:
方法测试:function test
单元测试:unit test
集成测试:intergration test
根据测试的次数:
冒烟测试:smoke test(android 猴子)
压力测试:prssure test
Android单元测试:
  1.Android测试类要继承AndroidTestCase类
2.写测试方法,在测试方法内使用断言assert来测试要测试的方法
3.在AndroidManifest.xml中,要设置
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.lee.test" />
和<uses-library android:name="android.test.runner" >
4.确保adb连接正常。
MyService.java


package com.lee.test.service;

public class MyService {

 /**
  * 计算器相加的业务
  * @param a
  * @param b
  * @return
  */
 public int add(int a,int b){
  return a+b;
 }
}

 TestMyService.java

package com.lee.test.service.test;
import com.lee.test.service.MyService;
import android.test.AndroidTestCase;
public class TestMyService extends AndroidTestCase {
/**
* add方法的测试代码
* 把异常抛给测试框架
* @throws Exception
*/
public void testAdd()throws Exception{
MyService myService = new MyService();
int retVal = myService.add(3, 5);
//断言,预期结果是8,实际结果是retVal
assertEquals(8, retVal);
}
}
package com.lee.test.service.test;
import com.lee.test.service.MyService;
import android.test.AndroidTestCase;
public class TestMyService extends AndroidTestCase {
/**
* add方法的测试代码
* 把异常抛给测试框架
* @throws Exception
*/
public void testAdd()throws Exception{
MyService myService = new MyService();
int retVal = myService.add(3, 5);
//断言,预期结果是8,实际结果是retVal
assertEquals(8, retVal);
}
}

  AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lee.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<!-- 这里是进行单元测试必须要添加,指令集必须在manifest节点下 -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.lee.test" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.lee.test.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>
<!-- 这里也是进行单元测试必须要添加,在application节点下,使用函数库 -->
<uses-library android:name="android.test.runner" >
</uses-library>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lee.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<!-- 这里是进行单元测试必须要添加,指令集必须在manifest节点下 -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.lee.test" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.lee.test.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>
<!-- 这里也是进行单元测试必须要添加,在application节点下,使用函数库 -->
<uses-library android:name="android.test.runner" >
</uses-library>
</application>
</manifest>

  logCat的使用
  日志信息是分等级的:
verbose:提醒  黑色
debug:调试  蓝色
info:信息  绿色
warn:警告  橙色
error:错误  红色
使用上面的程序,可以做一个demo
修改MyService.java

package com.lee.test.service;
import android.util.Log;
public class MyService {
private static final String TAG = "MyService";
/**
* 计算器相加的业务
* @param a
* @param b
* @return
*/
public int add(int a,int b){
Log.v(TAG, ""+a);
Log.d(TAG, ""+b);
Log.i(TAG, ""+b);
Log.w(TAG, ""+a);
Log.e(TAG, ""+b);
System.out.println("System.out的log");
System.err.println("System.err的log");
return a+b;
}
}
package com.lee.test.service;
import android.util.Log;
public class MyService {
private static final String TAG = "MyService";
/**
* 计算器相加的业务
* @param a
* @param b
* @return
*/
public int add(int a,int b){
Log.v(TAG, ""+a);
Log.d(TAG, ""+b);
Log.i(TAG, ""+b);
Log.w(TAG, ""+a);
Log.e(TAG, ""+b);
System.out.println("System.out的log");
System.err.println("System.err的log");
return a+b;
}
}

   

最新内容请见作者的GitHub页:http://qaseven.github.io/

  

时间: 2024-12-02 04:41:32

Android下junit单元测试、logCat的使用的相关文章

【黑马Android】(02)短信发送器/布局演示/android下单位/android下Junit/保存数据/android下权限/xml解析和序列化

短信发送器 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.smssender" android:versionCode="1" android:versionName=&quo

Android下进行单元测试

在Android测试中,主要使用JUnit进行单元测试.其执行主要注意以下两点 1.测试类必须要继承android下的AndroidTestCase类,并使用assertEquals方法来测试结果是否正确 2.对AndroidManifest.xml进行配置 在manifest节点下添加指令集配置信息,如下: <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetP

Android系列----JUnit单元测试的使用

[正文] 一.单元测试的引入: 如果只是普通的一个小程序,编写测试是有些多此一举,但是当项目比较庞大的时候,一般都应该去编写单元测试.JUnit测试是白盒测试,即主要是程序员自己对开发的方法进行功能性测试.JUnit是一套框架,Android中也沿用了这一套框架. 在Android中使用JUnit测试大致分如下几个步骤: (1)在AndroidManifest.xml中增加对JUnit的支持,并制定测试项目包. (2)在AndroidManifest.xml中<application.../>

《精通移动App测试实战:技术、工具和案例》一2.3 应用JUnit对Android项目进行单元测试

2.3 应用JUnit对Android项目进行单元测试 2.3.1 JUnit基于Android项目TestCase的应用 如果我们对基于Android系统项目开发有一定了解的话,相信一定能看出来,其核心代码是计算两个整数相加的函数.我们做单元测试当然也挑选其最核心的函数来进行测试.可以按照如下的步骤来创建一个基于Android项目的测试用例(TestCase). 第一步:选中"CalculatorOfTwoNum"项目下的"src"目录中的"com.yu

Android最佳Mock单元测试方案:Junit + Mockito + Powermock

本文旨在从实践出发,引导开发者在Android项目中进行Mock单元测试. 什么是单元测试 单元测试由一组独立的测试构成,每个测试针对软件中的一个单独的程序单元.单元测试并非检查程序单元之间是否能够合作良好,而是检查单个程序单元行为是否正确. 为什么要进行单元测试 在敏捷开发大行其道的今天,由于时间紧,任务重,过分依赖测试工程师以及下列原因,导致单元测试不被重视,在开发流程中处于一个可有可无的尴尬境地. 1. 浪费的时间太多 1. 软件开发人员不应参与单元测试 1. 我是很棒的程序员,不需要进行

logcat- 当运行Android的JUnit测试时,LogCat&amp;amp;#39;s Log.x() 在哪里输出?

问题描述 当运行Android的JUnit测试时,LogCat's Log.x() 在哪里输出? 当我通过测试TestCase和AndroidTestCase中的派生类来测试普通的java类时,LogCat输出消失. 那它是否仍然可以捕获这些输出信息?或者说我只能使用更缓慢的ActivityInstrumentationTestCase2 < >作为基类? 解决方案 我在 Android 2.1中也遇见相似的问题.Eclipse中可查看logcat,但在Android Junit模式中运行程序

简单谈谈android studio 的单元测试_Android

面对android studio Run 一次项目要等好几分钟的痛点,不得不研究一下android studio 的单元测试. 其实我的目的很简单,在不对视图进行操作的前提下,测试一些activity 的生命周期,或网络拉取数据的一些处理,比如解析 json 数据啊,做网络请求啊等等,也就是对 Model层的测试.这些不需要操作视图,但在没有单元测试环境下,比如我们网络请求一些数据,Log 打印看看是否请求成功,却又要 利用模拟器或真机Run 一次项目,花费好几分钟,这是不能容忍的. 于是乎,强

Android 下都用什么来测试程序呢?

问题描述 最近几天查了下Android下测试的例子.写一个类继承自AndroidTestCase,然后在里面写相应的测试类.运行是查看JUint.这样测试的结果是什么呢?对于窗体泄露.内存泄露能查到吗?请用过测试的朋友指点,谢谢! 解决方案 junit是单元测试啊···对于内存泄露Memory Analyzer Tool(MAT)来分析关于Android的内存泄漏:如何检测?[url]http://blog.sina.com.cn/s/blog_3e3fcadd0100m84z.html[/ur

简单谈谈android studio 的单元测试

面对android studio Run 一次项目要等好几分钟的痛点,不得不研究一下android studio 的单元测试. 其实我的目的很简单,在不对视图进行操作的前提下,测试一些activity 的生命周期,或网络拉取数据的一些处理,比如解析 json 数据啊,做网络请求啊等等,也就是对 Model层的测试.这些不需要操作视图,但在没有单元测试环境下,比如我们网络请求一些数据,Log 打印看看是否请求成功,却又要 利用模拟器或真机Run 一次项目,花费好几分钟,这是不能容忍的. 于是乎,强