代码改变世界

Android配置 常规单元测试

2011-10-08 23:38  Shawn.Cheng  阅读(311)  评论(0编辑  收藏  举报

Android单元测试分为两个部分, 一部分是与Android本身无关的测试,也就是业务逻辑测试,该部分测试不涉及Activity这一层,我们暂且成为常规的单元测试。另外的一种测试就是于Activity相关的单元测试


这里,我们先谈一下于Activity无关的常规单元测试


在通常情况下,我们会选择在需要添加测试用例的类上边点击右键,选择new/JUnitTestCase然后,Eclipse会跳出一个让你选择添加测试用例的基本信息。比如类名,包名什么的。添加完毕后,然后在自动产生的方法上点击右键 run as /Junit Test.这时候,会出现一个错误

Internal Error (classFileParser.cpp:3161), pid=5320,tid=6952

#  Error:ShouldNotReachHere()


下面说一下详细步骤

1 创建项目DroidUnitTest。

 在包中加入处理业务逻辑的类MyDataHelper ,在里边添加一个方法(内容随意)。新建 名为test 的sourcefolder,添加测试包。然后在MyDataHelper上右键,选择new/JUnitTestCase .填写包名,类名等信息,点击ok,如图所示。



2. 在MyDataHelper中添加如下方法


在MyDataHelperTest中添加如下内容


在 addTest点击鼠标右键,选择runas JuitTest,你会收到如下错误

#

# A fatal error has been detected by the Java RuntimeEnvironment:

#

#  Internal Error(classFileParser.cpp:3161), pid=5320, tid=6952

#  Error:ShouldNotReachHere()

#

# JRE version: 6.0_22-b04

# Java VM: Java HotSpot(TM) Client VM (17.1-b03 mixedmode windows-x86 )

# An error report file with more information is saved as:

#D:\eclipse_develope\workspace\DroidUnitTest\hs_err_pid5320.log

#

# If you would like to submit a bug report, please visit:

#  http://java.sun.com/webapps/bugreport/crash.jsp

#

 

不用担心,这是因为Android默认运行单元测试的是Android.jar2.2,而Juint是基于jre 以及Junit的,所以,运行会失败,同时也跟Android做的单元测试封装有关。看接下来的配置

3.选择项目,Run asconfiguration ,在弹出的界面中要将Bootstrap一项Android2.2移除,并添加jre 以及 Junit(以及其他你单元测试要用到的包)。其实也就是你要配置一下运行Junit时的环境。如图所示。




配置完成之后,在项目上选择run as configuration 找到刚才所建立的Junit ,点击run即可看到运行的单元测试的效果。当然你可以选择其他的Junit节点下的测试配置,只要保证该配置的BootstrapEntries没有错即可。




在单个方法上运行测试用例是也是一样,只要保证运行时的配置没问题,就行了。


4. 你需要注意,如果你要测试的方法中引入了某些包,那么你这个Bootstrap Entries 也应该包含该包,否则测试用例将会找不到对应的类。

例如,我们在MyDataHelper中调用了Android包中HttpClient 类,那么在对单元测试的run进行配置时,也应该加入该类所在的包。但是,绝不能加入Android.jar应为这样的话,你又回到原来的问题上来。应该只加一部分。可以从网上找到相应的包,在runconfiguration中,点击 add external jar将这些包加入到Bootstrap Entries中,再run就可以了。


Ok,Android上的常规单元测试就介绍到这里,在接下来的文章中,我将介绍如何建立Activity的单元测试。