背景
近期參与了一个Anroid医疗项目,当中项目底层有很是多基础类及通信类,而且很是多涉及复杂的字节操做还有多线程同步及状态机处理。这种项目作一下TDD仍是必要的,尽可能项眼下期把风险减小一些。
现在的问题是本人使用的是IntelliJ开发的Android项目,刚開始还真不知道怎么下手。在參考了一些资料后。总结了一下IntelliJ中配置JUnit測试环境的步骤,但愿对你们有帮助。
环境:
操做系统:Windows 7
IntelliJ版本号:13.1
Android SDK API:19
Java Version:1.7
JUnit 4子版本号:JUnit 4.11(IntelliJ自带)
步骤:
1、在项目的AndroidManifest.xml文件里作例如如下更改:
在application节点下加入
<uses-library android:name="android.test.runner"/>,如图:
在根节点下加入例如如下内容:
当中targetPackage跟你所在项目的包名一样(參见你的AppManifest.xml文件顶部:
2、为你所在项目加入例如如下jar包引用
一、junit-4.11
二、harmcrest-core-1.3
三、annotations
3、调整项目对jar包的引用顺序
作这个调整是因为咱们使用的Android API中包括了JUnit 3.8,默认SDK是放在最前面的。不然代码中的Junit会被以为是Junit 3.8,那你就仅仅能使用Junit 3的測试方式了。
4、在项目文件夹树中,建立一个与src平级的文件夹用于存放所有的測试类。
简单起见我使用的是tests.
除了建立文件夹。咱们还需要指定新建立的文件夹为測试根文件夹:
右键tests文件夹,选择'Mark Directory As'--->'Test Sources Root'
5、在你的測试根文件夹下建立你的測试分类文件夹及详细的測试类
在測试类内部你需要的仅仅是给測试方法加上@Test标注。
6、执行你的測试
一、在代码编辑界面,在你的測试方法体中点击右键,在弹出的菜单中选中以JUnit的方式执行
这样的方式很适合刚写完測试。亟待看到某个測试的执行结果的场景。
另外一种使用快捷键的方式来单独执行某个測试,咱们仅仅需要将文本焦点切换到某个測试方法中,而后在使用组合键Ctrl+Shift+F10就可以达到同上面同样的測试效果。
二、编辑执行Configuration
点击Configurationbutton,在弹出界面中按例如如下步骤建立一个JUnit执行配置
在弹出的配置窗体作简单的配置。
详细配置细节请參见本文參考部分的《IntelliJ IDEA对JUnit支持的官方文档》部分。html
这样的方式适合于批量运行測试的场景。
回想JUnit3的使用方式
一、让你的測试类继承自Testcase
二、每个測试方法名必须以小写test为前缀
备注:IntelliJ IDEA已经内部支持JUnit4,Android SDK中也至少对JUnit3作了支持。所以并不需要再从Maven中对JUnit进行依赖管控。
除非你需要使用最新的JUnit中的某项特性。android
更新:
2014-10-16: 在开启JUnit4.0功能后项目中涉及Android生命周期的測试类(比方AndroidTestCase)将没有办法执行。缘由在于AndroidTestCase这些是由SDK支持的,但是SDK中引用的是JUnit3.8的类库,个人理解是假设你引用的是JUnit4.0,那么在执行时AndroidTestCase这些Android特有的測试依赖的JUnit3.8在执行时是不会载入的。測试执行器尝试载入该类測试时就会报错。 所以,假设你但愿在你的项目中測试与Android生命周期相关的类的话,那就仅仅能在项目中摒弃JUnit4。
參考:
在IntelliJ IDEA的项目中开启Annotations
IntelliJ IDEA对JUnit支持的官方文档
IntelliJ IDEA提供的JUnit測试的Sample项目
ADT中怎样配置JUnit
JUnit4測试说明:
JUnit4在IntelliJ IDEA中的使用(应该有三篇,但是仅仅有后两篇可见。可能第一篇就是将配置的,但是不可见--有点遗憾)
Android单元測试初探--Instrumentation
IntelliJ IDEA和ADT的持续測试插件Infinitest
ADT中使用JUnit的一个教程
一个老程序猿的Android測试驱动开发实践系列3篇(主要側重界面交互測试)