背景
近期參与了一个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自带)


步骤:
一、在项目的AndroidManifest.xml文件里做例如以下更改:
在application节点下加入

<uses-library android:name="android.test.runner"/>,如图:
在根节点下加入例如以下内容:
当中targetPackage跟你所在项目的包名同样(參见你的AppManifest.xml文件顶部:



二、为你所在项目加入例如以下jar包引用
1、junit-4.11
2、harmcrest-core-1.3
3、annotations

三、调整项目对jar包的引用顺序

做这个调整是由于我们使用的Android API中包括了JUnit 3.8,默认SDK是放在最前面的。否则代码中的Junit会被觉得是Junit 3.8,那你就仅仅能使用Junit 3的測试方式了。

四、在项目文件夹树中,创建一个与src平级的文件夹用于存放全部的測试类。
简单起见我使用的是tests.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWlzc2F1dHVtbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">


除了创建文件夹。我们还须要指定新创建的文件夹为測试根文件夹:
右键tests文件夹,选择'Mark Directory As'--->'Test Sources Root'

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWlzc2F1dHVtbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">



五、在你的測试根文件夹下创建你的測试分类文件夹及详细的測试类
在測试类内部你须要的仅仅是给測试方法加上@Test标注。


六、执行你的測试
1、在代码编辑界面,在你的測试方法体中点击右键,在弹出的菜单中选中以JUnit的方式执行

这样的方式很适合刚写完測试。亟待看到某个測试的执行结果的场景。

另一种使用快捷键的方式来单独执行某个測试,我们仅仅须要将文本焦点切换到某个測试方法中,然后在使用组合键Ctrl+Shift+F10就能够达到同上面一样的測试效果。

2、编辑执行Configuration
点击Configurationbutton,在弹出界面中按例如以下步骤创建一个JUnit执行配置



在弹出的配置窗体做简单的配置。

详细配置细节请參见本文參考部分的《IntelliJ IDEA对JUnit支持的官方文档》部分。

这样的方式适合于批量运行測试的场景。



回想JUnit3的使用方式
1、让你的測试类继承自Testcase
2、每一个測试方法名必须以小写test为前缀
备注:IntelliJ IDEA已经内部支持JUnit4,Android SDK中也至少对JUnit3做了支持。因此并不须要再从Maven中对JUnit进行依赖管控。

除非你须要使用最新的JUnit中的某项特性。



更新:
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篇(主要側重界面交互測试)








IntelliJ IDEA中怎样使用JUnit4的更多相关文章

  1. 在Intellij IDEA中添加JUnit单元测试

    Intellij IDEA中添加JUnit单元测试 目录 Intellij IDEA中添加JUnit单元测试 下载jar包 在Intellij IDEA项目中添加jar包 下载插件并进行设置 创建存放 ...

  2. Intellij Idea中的Jetty报出Web application not found src/main/webapp错误的解决方案

    今天在Intellij Idea中编译项目的时候,运行起来一直会报出如下的错误: Web application not found src/main/webapp 当时感觉应该是什么文件缺少了.所以 ...

  3. IntelliJ IDEA中使用综合使用Maven和Struts2

    在Intellij IDEA中手动使用Maven创建Web项目并引入Struts2 创建一个新的Maven项目 建好项目之后点击左下角的enable auto import 项目部署 在Moudule ...

  4. 在Web应用和IntelliJ IDEA中使用Spring框架

    在JAVA SE和Web应用中都可以使用Spring, 这里只说在Web程序中的应用. 下面将以Spring 3.0.5版本为例. 在Web中使用Spring只需要如下两个步骤: 第一,将Spring ...

  5. IntelliJ IDEA 中集成使用git(2015年06月10日)

    前提:需要有一个git账号,https://github.com/ 1.首先需要下载一个Github,https://windows.github.com 安装之后的界面是酱紫的,非常简洁美观 2.在 ...

  6. 在Intellij IDEA中使用Debug

    Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方 ...

  7. IntelliJ IDEA中Mapper接口通过@Autowired注入报错的正确解决方式

    转载请注明来源:四个空格 » IntelliJ IDEA中Mapper接口通过@Autowired注入报错的正确解决方式: 环境 ideaIU-2018.3.4.win: 错误提示: Could no ...

  8. IntelliJ IDEA中项目报错org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 8 或maven操作compile报resource使用utf8这样的编码错

    问题:项目开发工具已经setting成utf-8 并且项目各方面的配置文件包括maven这些的pom.xml里的配置都已经设置为utf-8 但是还报错 IntelliJ IDEA中项目报错org.xm ...

  9. IntelliJ IDEA中创建Web聚合项目(Maven多模块项目)

    Eclipse用多了,IntelliJ中创建Maven聚合项目可能有小伙伴还不太熟悉,我们今天就来看看. IntelliJ中创建普通的Java聚合项目相对来说比较容易,不会涉及到web操作,涉及到we ...

随机推荐

  1. Canny边缘检測算法原理及其VC实现具体解释(一)

    图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般能够看作是一个阶跃,既从一个灰度值在非常小的缓冲区域内急剧变化到还有一个灰度相差较大的灰度值.图象的边缘部分集中了图象的大部分信息,图 ...

  2. HDU 3584 三维树状数组

    三维树状数组模版.优化不动了. #include <set> #include <map> #include <stack> #include <cmath& ...

  3. nyoj 55 懒省事的小明 优先队列 multiset 还有暴力

    懒省事的小明 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3   描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的 ...

  4. DBA日常管理——数据归档(Archiving-Data)

    原文出处:http://www.sqlnotes.cn/post/2013/09/05/DBA-Daily-Jobs-One%E2%80%94%E2%80%94-Archiving-Data 均为本人 ...

  5. HUNNU11342:Chemistry(模拟)

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11342 Problem description The ch ...

  6. win2003的IIS無法使用,又一次安裝提示找不到iisadmin.mfl文件

    我的系統是win2003 繁體版 sp2,現在iis無法使用,我同事的也是,也不知道是不是跟在網域中有關係,因為我用虛擬機的繁體系統win2003 R2版iis能够正常使用,不過曾经那台電腦也是在網域 ...

  7. Android开发者指南-用户界面-拖放-Drag and Drop[原创译文]

      英文原文:http://developer.android.com/guide/topics/ui/drag-drop.html 版本:Android 4.0 r1 译者注:黄色底色为未决译文 快 ...

  8. 移动开发中的Scheme跳转说明——Allowing OtherApps to Start Your Activity

    Allowing OtherApps to Start Your Activity 为了开发更多人使用的App,我们总希望我们的App能够提供一种接口被其他App调用.如我们常见的 大众点评  与  ...

  9. python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET

    python random模块 - 小驹的专栏 - 博客频道 - CSDN.NET python random模块 分类: python 2011-11-15 15:31 6037人阅读 评论(2) ...

  10. Hongwei Xi

    Hongwei Xi Hongwei Xi Hongwei Xi's Curriculum Vita Hongwei Xi