背景
近期參与了一个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. HDU1027 Ignatius and the Princess II 【next_permutation】【DFS】

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  2. ABAP常用字符串处理

    1.SEARCH搜索指定字符串 REPORT Z_CHAR. ). MOVE 'Welcom to sap world!' to str. SEARCH str for 'sap'. 如果查找成功sy ...

  3. Mac Python路径总结

    Mac 下Python 可以多版本的并存,并且Python的目录也有好几个,不过总体来说,Mac 自带的有python 还是比较方便的 Mac 系统自带的又Python ,可能Python版本需要更新 ...

  4. GetCursorPos/WindowFromPoint/SendMessage

    GetCursorPos/WindowFromPoint/SendMessage (用API函数向Edit框发送字符) GetCursorPos(mPoint); DTWND:=WindowFromP ...

  5. JQuery+AJAX实现搜索文本框的输入提示功能

    平时使用谷歌搜索的时候发现只要在文本框里输入部分单词或字母,下面马上会弹出一个相关信息的内容框可供选择.感觉这个功能有较好的用户体验,所以也想在自己的网站上加上这种输入提示框. 实现的原理其实很简单, ...

  6. JavaScript快速入门(六)——DOM

    概念扫盲 DOM DOM是 Document Object Model(文档对象模型)的缩写,是W3C(万维网联盟)的标准.DOM 定义了访问 HTML 和 XML 文档的标准:“W3C 文档对象模型 ...

  7. HDU4939Stupid Tower Defense (有思想的dp)

    Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...

  8. POJ 3007 Organize Your Train part II

    题意: 如上图所示,将一个字符串进行分割,反转等操作后不同字符串的个数: 例如字符串abba:可以按三种比例分割:1:3:2:2:3:1 部分反转可以得到如下所有的字符串: 去掉重复可以得到六个不同的 ...

  9. 【Demo 0008】标签控制器

    本章学习要点:       1.  了解标签控制器基础知识;       2.  掌握标签控制器层次结构;       3.  掌握标签控制器基本用法;       4.  掌握自定义标签控制器:   ...

  10. csdn发博文验证码缺陷

    csdn验证码的长处: 一,差点儿没有浪费人脑人力,却要花去机器人非常多cpu csdn发博文验证码却有非常大缺陷: 一.验证码的内容终于结果是简单的数字,能够穷举尽的,也就是说不怕被封号的话全然能够 ...