当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]使用单元测试可以保证我们开发的应用质量, 一般我们开发完业务层后对业务层进行测试,确保业务层不会出现bug,对业务层通过之后控制层就可以调用业务层 完成所需的功能。

使用单元测试可以保证我们开发的应用质量, 一般我们开发完业务层后对业务层进行测试,确保业务层不会出现bug,对业务层通过之后控制层就可以调用业务层 完成所需的功能。

以前做Java开发的时候用junit进行测试,利用System.out.println() 方法在控制台进行打印,下面我来讲讲如何对Android应用进行 单元测试以及日志输出。

1. 单元测试与日志输出

1.1单元测试步骤:

第一步:在AndroidManifest.xml文件中插入以下代码,在 元素中插入,然后在中插入

第二步,编写单元测试代码 测试类必须继承AndroidTestCase类

第三步,执行测试

1.2 测试示例

首先在AndroidManifest.xml中添加第一步所需代码,最终代码如下:

package="cn.csdn.android.junit"

android:versionCode="1"

android:versionName="1.0" >

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

android:label="@string/app_name"

android:name=".Junit_testActivity" >

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="cn.csdn.android.junit"

android:label="MyJunitTest"

>

然后新建测试用例:

用例方法为 public void func1(){}其中初学者常犯的错误是为测试方法添加参数,一定要注意测试方法是不需要传入参数的,如果测试方法内部出现异常,建议是直接抛出,而不要捕获异常,异常抛出后会被测试框架获取,在控制台显示出来。测试类的内容如下:

package cn.csdn.android.junit;

import junit.framework.Assert;

import android.test.AndroidTestCase;

public class MyTest extends AndroidTestCase{

public void testFunc1() throws Throwable{

User u = new User();

u.func1();

}

public void testFunc2()throws Throwable{

User u = new User();

Assert.assertEquals(20,u.func2());

}

}

Assert类在此的作用是 判断所得到的结果与期望值的关系

第三步,运行测试用例:先进入大纲视图(Outline),如果Eclipse中没有,可在工具栏window中找到,然后添加上即可。然后右击测试用例,找到[Run As],点击【Android JUnit Test】,结果条显示为绿色表示正确:

1.3 日志输出

Console控制台只能输出安装信息,如果在程序中添加一行System.out.println("aaa"),如果是进行Java开发,则会在console控制台打印,但在Android中却不能在console中打印出来,而是会在LogCat中打印出来, 在Android程序中进行信息输出,一般采用Android.util.Log类的静态方法进行实现,log类所输出的日志的内容从少到多,分别是ERROR,WRAN,INFO,DEBUG,VERBOSE,对应的五种不同类型的首字母,分别是Log.e(),Log.w(), Log.i(), Log.d (), Log.v()五种静态方法,使用不同的方法输出的颜色不同,如下图所示:

,单击每个按钮,可以过滤其自身类型以及右侧类型的日志,如点击I 按钮,会显示IEW三种类型的日志,而 VD类型的日志则不会显示出来,

1)编写日志输出测试类,代码修改如下

package cn.csdn.android.junit;

import junit.framework.Assert;

import android.test.AndroidTestCase;

public class MyTest extends AndroidTestCase{

private final static String TAG = "myTag";

public boolean onTouchEvent(MotionEvent event) {

Log.i(TAG,"onkeyTouch");

showInfo(" "+ event.getX()+" "+ event.getY());

return super.onTouchEvent(event);

}

说明:Log.i(String tag,String sag),tag是这条信息定义的一个标签,在开发时通常采用他所在类的类名, 这样方便我们追踪输出信息,也方便我们看到信息时知道他出自哪个类,msg是这个参数希望输出的内容

2)执行测试:执行方法和上面的测试方法几乎相同,打开日志查看器“LogCat”,查看是否输出这个信息,如下图:

打开会发现输出的内容特别多,这是我们就需添加一个过滤器,来选取我们指定的标记信息,其中标记为我们在调用Log.i(TAG,"onkeyTouch")中指定的TAG,本例中为“MyTest”,添加过滤器的方法如下:

点击上图中的“+”,弹出添加LogFilter界面,在其中填写的信息如下图:

点击“OK”,在LogCat管理器中多出一个选项卡,“MyTest”,在该选项卡中出现我们在代码中想要的信息:

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

-LambdaTest推出全球首个AI智能体测试平台:引入智能体对智能体测试 AI原生多智能体系统提供更智能、更快、更全面的软件测试 旧金山2025年8月20日 /美通社...

关键字: 智能体 测试平台 TEST AI

深圳2025年8月12日 /美通社/ -- 全球消费电子行业领导者、Mini LED和超大屏[1]电视销量全球第一的TCL欣然宣布,公司将参加9月5日至9日在柏林举办的2025年德国柏林消费电子展(IFA 2025)。作...

关键字: TCL 消费电子展 NI 大屏

北京2025年8月11日 /美通社/ -- 2025年8月8日,由紫光汉图举办的 "双引擎•印未来"紫光打印机新品发布会正式在北京通明湖会展中心举行。 工业和信息化部电子信息司电子系统处领导、中国电...

关键字: 打印机 紫光 NI 核心技术

加快开发进程;提升质量、安全性、性能与成本效益 利用耐世特在底盘领域的专业知识和线控技术产品组合 美国密西根州奥本山2025年8月11日 /美通社/ -- 耐...

关键字: MOTION 软件 运动控制 NI

-Cognizant正在筹办全球最大规模的氛围编程活动,以提升数千名员工的AI素养 为抓住人工智能经济将创造的巨大机遇,Cognizant与Lovable、Windsurf、Cursor、Gemini Code Ass...

关键字: 编程 NI AN PI

-Cognizant推出AI Training Data Services,助力企业级AI模型加速开发 Cognizant是数据与AI模型训练合作伙伴,长期深受大型数字原生先锋企业信赖,助力其训练全球最先进的AI/机器...

关键字: NI AN AI模型 SERVICES

葡萄牙波尔图2025年7月31日 /美通社/ -- 全球领先的新一代制造执行系统供应商凯睿德制造宣布收购专注于高科技制造图像分析的AI专家公司 Convanit。本次收购是扩展凯睿德制造数据平台能力的重要一步,将助力客户...

关键字: 智能制造 图像分析 NI AN

2025年,该实验室已新获两项美国授权专利,开源了一个关键AI开发平台,并赢得了GECCO金奖 新泽西州提内克2025年7月25日 /美通社/ -- Cognizant(Nasdaq:CTSH)今日宣布,其AI实验室新...

关键字: AI NI AN BSP

其他电脑(比如安卓手机/平板电脑)的屏幕坏了,你可能想在安排维修之前紧急访问一些东西。你可以使用android的USB OTG功能(是的,几乎每个android都支持这个功能,你可以将鼠标和键盘连接到它)。

关键字: USB 鼠标 Android 树莓派

上海2025年6月30日 /美通社/ -- 6月30日,文心大模型正式开源,黑芝麻智能即日起快速启动与文心大模型技术合作。 黑芝麻智能将基于文心大模型,打造行业领先的车端推理引擎,为企业、开发者提供真正可用、好用、可落...

关键字: 模型 NI 开源 多模
关闭