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/

  

目录
相关文章
课时148:junit测试工具
课时148介绍了JUnit测试工具的使用,包括定义、配置和编写测试程序。JUnit是流行的用例测试工具,用于确保代码稳定性。
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
291 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
73 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
117 5
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
138 6
Android 性能测试初探 (六)
本节聊聊性能测试的最后一项- 流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试,但本系列文章都不去一一探讨了。
121 6
Android 性能测试初探 (五)
聊聊大家不常关注的测试项- 功耗
91 3
Android 性能测试初探 (四)
本文介绍了GPU在移动端性能测试中的重要性,并详细解释了过度绘制、帧率和帧方差的概念。针对GPU测试,文章列举了三项主要测试内容:界面过度绘制、屏幕滑动帧速率和平滑度。其中,过度绘制测试需遵循特定标准,而帧速率和平滑度测试则可通过软件或硬件方法实现。在软件测试中,使用Systrace插件和高速相机是两种常用手段。对于不同机型,帧率及帧方差的测试标准也需相应调整。
103 5
Android 性能测试初探 (三)
本文承接《Android性能测试初探(二)》,深入探讨CPU与内存测试。介绍了移动端内存测试的重要性及其测试目标,并详细列举了不同状态下应用内存消耗情况的测试项目。此外,还提供了多种内存测试方法,包括使用`procrank`等工具的具体操作步骤。最后,文章也简要提及了CPU测试的相关内容,帮助读者更好地理解Android性能测试的关键要素。
88 5
Android 性能测试初探 (二)
上回大体介绍了下在 android 端的性能测试项,现在我们就细节测试项做一些阐述(包括如何自己 DIY 测试)
108 4

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等