更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注我的的微信号,感谢!html
原文连接:http://www.cnblogs.com/zishi/p/6726664.htmljava
-----如何快速完成单元测试代码数据库
注:下面的一些演示图片是按照我本地的4.11版本,差异不大。api
在项目上右键- Properties- java build path - Libraries, 点击Add External JARs, 选中刚刚下载的Junit包便可。如图所示:微信
或者使用如下方式添加:oracle
在项目上右键- Properties- java build path - Libraries, 点击Add Library…,以下图所示:eclipse
在弹出窗口中,选中Junit,点击Next按钮继续:maven
接下来就是选择当前版本,咱们目前使用的大版本是Junit 4,能够看到我本地版本为4.11,点击Finish按钮完成:函数
JaCoCo(Java Code Coverage)是一种分析单元测试覆盖率的工具JaCoCo(Java Code Coverage)就是一种分析单元测试覆盖率的工具,使用它运行单元测试后,能够给出代码中哪些部分被单元测试测到,哪些部分没有没测到,而且给出整个项目的单元测试覆盖状况百分比,看上去一目了然。EclEmma 是基于 JaCoCo 的一个 Eclipse 插件,开发人员能够方便的和其交互。下面简单介绍这两个工具的安装流程。工具
JaCoco安装:
首先咱们访问JaCoco网站:http://www.eclemma.org/jacoco/ 下载最新版本,目前是:http://search.maven.org/remotecontent?filepath=org/jacoco/jacoco/0.7.9/jacoco-0.7.9.zip
压缩包解压后,将其中的Jar包拷贝到Java工程下面存放第三方Jar包的目录。好比在我本地存放在这里D:\tools\luna-withtestng\luna\eclipse\plugins
从新启动Eclipse IDE便可加载JaCoCo插件。接下来咱们安装EclEmma:
打开 Eclipse 的软件市场,在其中搜索 EclEmma,找到后完成安装,以下图所示:
直接安装便可。
选择须要生成单元测试代码的项目,并在须要生成测试代码的类上点右键 - New – Other…,以下图所示:
在弹出窗口选择JUnit文件夹,点击展开,选择第一个“JUnit Test Case”,而后点击“Next”:
确认一下选中的Junit版本,其余所有按照默认选项便可:
确认无误,点击“Next”按钮,进入下一步:
此处选中咱们须要生成单元测试代码的方法便可,此处我选择了以前写好的两个须要测试的函数,而后点击”Finish”按钮,最终对应生成的单元测试代码以下:
鼠标选中要运行的代码,EclEmma安装后直接能够点击IDE上方的工具栏,有一个运行按钮,以下图:
注:若是没有安装EclEmma插件,能够经过菜单Run As – Junit test执行单元测试
毫无疑问的,此次运行失败了:
详细的失败log以下:
HelloWorldTest.testAddMethod
testAddMethod(com.test.jacoco.HelloWorldTest)
java.lang.AssertionError: Not yet implemented
at org.junit.Assert.fail(Assert.java:88)
at com.test.jacoco.HelloWorldTest.testAddMethod(HelloWorldTest.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
………..
从上方的抛出的信息中,能够看到咱们生成的断言中指定的消息“Not yet implemented”,另外,失败缘由是咱们默认生成的是一个fail断言,咱们看一下关于fail断言的描述:
|
fail |
|
因此很是清楚的知道,这个断言的用途就是为了使单元测试当即失败,它其实并无测试到咱们的具体代码。
接下来咱们给他们分别添加具体的测试代码和断言,以下图所示:
代码完成以后,继续调用Run As – Junit test,运行,此次毫无疑问运行成功了,看下图:
这样咱们就完成了两个函数的单元测试代码覆盖。这里咱们又用到了两个经常使用断言:assertNotNull()和 assertEquals()。Junit提供不少断言方法给咱们,正确使用这些断言能够帮助咱们肯定被测试的函数是否按照预期的效果正常工做了,很是方便。咱们在本文的最后部分提供了附录文档,详细介绍了Junit的所有断言目录,有兴趣的同窗能够继续查看。
JaCoCo和EclEmma安装完成后增长了如下特性:
1、未覆盖代码标记为红色,以下图:
2、已覆盖代码会标记为绿色,如图所示:
3、固然也有部分覆盖的状况,如图所示(还有多是由于代码未彻底执行):
4、在Eclipse下方的状态栏窗口,增长了一栏“Coverage”,点击能够显示详细的代码覆盖率:
5、颜色也能够在Eclipse中自定义设置:
以上是本次插件的所有介绍。咱们经过这些工具能够快速生成单元测试代码,并利用分析工具将单元测试覆盖率尽可能提升,这样咱们对本身开发的代码更有信心了。固然,咱们在这里并非为了单纯的追求这个数字,在增长单元测试覆盖率的诱导下,咱们从新理清了测试的步骤,写出了更有意义、更全面的单元测试。并且根据单元测试分析工具给的反馈,咱们还发现了先前没有想到的情形。所以,单元测试的覆盖率并不仅是一个为了取悦管理者的数据,它实实在在地帮助咱们改善了代码的质量,增长了咱们对所编写代码的信心。
Junit Assert目录 |
||
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertArrayEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertEquals |
|
|
assertFalse |
|
|
assertFalse |
|
|
assertNotEquals |
|
|
assertNotEquals |
|
|
assertNotEquals |
|
|
assertNotEquals |
|
|
assertNotEquals |
|
|
assertNotEquals |
|
|
assertNotEquals |
|
|
assertNotEquals |
|
|
assertNotNull |
|
|
assertNotNull |
|
|
assertNotSame |
|
|
assertNotSame |
|
|
assertNull |
|
|
assertNull |
|
|
assertSame |
|
|
assertSame |
|
|
assertThat |
|
|
assertThat |
|
|
assertTrue |
|
|
assertTrue |
|
|
fail |
|
|
感谢阅读,做者原创技术文章,转载请注明出处
其余推荐相关阅读:
单元测试系列之一:如何使用JUnit、JaCoCo和EclEmma提升单元测试覆盖率
单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解