背景
近期參与了一个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. Hadoop基于文件的数据结构及实例

    基于文件的数据结构 两种文件格式: 1.SequenceFile 2.MapFile SequenceFile 1.SequenceFile文件是Hadoop用来存储二进制形式的<key,val ...

  2. cocos2dx+lua编译Android项目

    一.简单介绍 cocos2dx版本号:3.2 二.问题及解决方式 1.为项目开启Native支持,把项目转为C++项目. 1>.项目开启C++ Native支持,操作例如以下图 watermar ...

  3. 创建了一个基于最短路径规划geoserver的wms服务

    两点之间的文章书面请求随机最短路径sql功能,这篇文章是关于如何将上述到系统中的子功能. 1.geoserver登录 首先单击geoserver安装路径下的start Geoserver 待geose ...

  4. Swift - UIView的常用属性和常用方法总结

    1,UIView常用的一些属性如下: frame:相对父视图的坐标和大小(x,y,w,h) bounds:相对自身的坐标和大小,所以bounds的x和y永远为0(0,0,w,h) center:相对父 ...

  5. 九度OJ 1065 输出梯形 (模拟)

    题目1065:输出梯形 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3745 解决:2043 题目描写叙述: 输入一个高度h.输出一个高为h.上底边为h的梯形. 输入: 一个整数h(1& ...

  6. C++学习之路—多态性与虚函数(一)利用虚函数实现动态多态性

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 多态性是面向对象程序设计的一个重要特征.顾名思义 ...

  7. TWinControl.DefaultHandler处理WM_CTLCOLORMSGBOX..WM_CTLCOLORSTATIC消息的两个参数很有意思,两个都是传递句柄

    procedure TWinControl.DefaultHandler(var Message); begin then begin with TMessage(Message) do begin ...

  8. Complete Guide for Spring Boot Actuator

    You are here to learn about Spring Boot Actuator for collecting metrics about your production grade ...

  9. Android调用系统相机、自己定义相机、处理大图片

    Android调用系统相机和自己定义相机实例 本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,而且因为涉及到要把拍到的照片显示出来,该样例也会涉及到Android载入大图片时候的处 ...

  10. Swift - 文本输入框内容改变时响应,并获取最新内容

    1,问题描述 有时我们开发的时候需要先把“确认”按钮初始设置为不可用,当文本框中输入文字以后,再将输入按钮变为可用. 2,实现原理 (1)要检测文本框内容的变化,我们需要让新界面的Controller ...