在做单元测试时,jMock可以非常方便的构建出mock对象,大大提高写test case的时间。本文就谈谈如何在RCP开发中使用jMock做单元测试。
1. 导入jMock包
在Eclipse RCP开发,因为包之间的依赖是通过OSGi的完成的,所以要复杂一些。就好像jUnit就被做成了Eclipse下的一个Plugin, 所以我也同样使用屡试不爽的"Plug-in from existing JAR archives"。
- 从jMock的网站上下载所有的jar packages(http://www.jmock.org/download.html).
- 进入Eclipse,选择New Project->Plug-in development->Plug-in from existing JAR archives. 然后选择"Add External...", 选中所有的Jar文件后,点击Next。然后输入Project Name之类的东西(我一般不选中"Unzip the JAR archives into project",嫌unzip之后的文件太多了。)然后"Finish",新的jMock plugin就生成了。
2. 使用jMock写测试
下面我们就可以使用生成好的jMock Plugin写测试了。
首先我们先构建一个新的plugin工程,在里面的我们会写所有的测试用例。这点我相信学RCP的朋友都知道,省略。(在我的一些实践中,这种test工程最好以fragment的形式,这样不但可以有效的隔离测试代码,还可以方便测试代码使用被测代码,这个问题以后再表)。
工程建好后,我们首先要修改它的MANIFEST.MF文件,加入相关的plugin. 主要加入两个plugin, 一个是junit, 另一个是我们刚生成的,如下图:
图中那个叫XX.testutil的plugin就包含了jmock。 这里请大家特别注意 ,junit4的plugin一定要放在list的最后一个,至少要比jmock靠后。如若不然,运行时会有错误的。
好了,下面就请你写个测试来试试吧。
