`
gao_xianglong
  • 浏览: 467202 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Use JUnit4.x+EclEmma(Code Coverage )

阅读更多

前言

 

谈到单元测试,想必各位都应该听说过Junit的大名。是的,直至今日,虽然目前市面上确实拥有诸多优秀的Test Frameworks,但笔者至今仍在使用JUnit来跑自己的单元测试。Junit目前的最新版本为4.x,至于变化吗还是有的,最明显的莫过于基于Annotations的方式...

其实说测试工作到底属于谁,笔者不想过于纠结,从客观来说自己写的代码,自己测试确实是应该的,所以笔者不再想再次争论开发人员是否应该把所有工作中心都集中在业务层之类的话语,那么就此打住。

当然笔者本篇博文不是要介绍如何使用JUnit,而是介绍如何使用JUnit和EclEmma工具做集成测试,这才是本篇文章的目的。笔者比较推崇EclEmma最为你项目的代码测试覆盖率工具,原因如下3点:

 

1、使用简单方便,维护成本低

2、开源等之类的都是废话,更关注的是能够生成像模像样的测试覆盖率文档交差是主要;

3、想要让你的项目开发更规范、更流程化,这种形式显然是必要的;

 

一、EclEmma下载与安装

 

EclEmma作为一款优秀的代码测试覆盖率插件,目前在市面上还是拥有较为多的使用场景。那么如果你eclipse等IDE上没有安装,你仍然需要老老实实的下载安装:

 

安装过程大概耗时一分钟左右,这段时间你可以很果断的站起来扭扭屁股,活动活动老胳膊老腿,防止脑血栓,脑淤血等疾病...

安装好后,eclipse会自动重启,你只需耐心等待即可。当成功安装好后,你会在eclipse等IDE工具的菜单栏发现EclEmma的图形插件:

 

 

当然安装完毕只是良好的开始,接下来的章节我们会讲到究竟如何来使用EclEmma与JUnit的集成测试操作,与如果使用EclEmma生成测试覆盖率报告。

 

二、JUnit4.x+EclEmma集成测试

 

万事俱备后,我们只需深呼吸一下,接下来的工作才是重点。请用一分钟快速的构建好你的项目工程以及测试代码。

由于笔者测试项目使用Maven3.x进行项目构建,如果各位不清楚Maven的基本使用,请参考笔者的Use Maven3.x博文。废话不多说,以下为笔者的项目工程目录结构:

 

 

 

源码如下:

 

package com.test.demo;

/**
 * Hello world!
 *
 */
public class App 
{
    public int age()
    {
        return 18;
    }
    
    public String name()
    {
        return "EclEmma";
    }
}

 

 

 

测试代码如下:

 

package com.test.demo;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class AppTest {
	private App app = new App();
	
	@Before
	public void setUp() throws Exception {
	}

	@Test
	public void testAge() {
		assertEquals(10, app.age());
	}

	@Test
	public void testName() {
		assertEquals("EclEmma", app.name());
	}

}

 

既然代码写好了,咱们首先按照管理跑个JUnit:

 

 

值得庆幸的是测试代码全部通过,来吧,喝杯小酒高兴一下呗。

既然测试已经通过,那么我们有必要开始使用EclEmma生成测试覆盖率了,在开始之前,笔者还是有义务进行扫盲,所谓测试覆盖率,客观来说指的是你的测试代码到底覆盖了你项目源代码的多少有效范围。懂吗????

既然动了,我就接着说了,点击项目右键选择Coverage As属性跑Junit你便可以看见你项目的测试覆盖率了:

 

 

通过上图咱们可以很清晰的发现,咱们的测试覆盖率为100%,来吧,再喝一杯。

App一共包含2个方法,如果笔者的测试代码只针对其中一个方法进行测试,而忽略另一个呢?什么效果?你懂得,从理论上来说这种测试覆盖率只有50%左右,到底实际如何呢?观看下图你便知晓:

 

 

上图可以很清晰的发现,测试覆盖率由于笔者仅对App测试了一个方法,那么测试覆盖率必然降低。

最后一点,仔细看下图:

 

 

上图绿色部分代表的是已经测试覆盖通过的代码,红色部分为未测非覆盖的代码,当然还存在一种黄色部分,由于天色已晚,笔者需要养精蓄锐,所以情形不再模拟重现,请自行摸索,出现黄色的原因是因为代码未得到完全执行所致。

 

 三、生成测试覆盖率文档

当我们生成测试覆盖率后,并不希望以截图这么挫的方式发给你的上级,所以我们需要EclEmma的自动生成覆盖率文档来帮助我们交差。

右击Coverage台,选择Export Session到处即可,到处格式多种多样,你可选择常规的HTML格式,XML格式等等,笔者选择HTML格式,因为这样更直观:

 

 

当生成后,我们打开另存的HTML文件,你会清晰的发现测试覆盖率的详细报告:

 

 

提示:

生成测试覆盖率文档后,咱们的代码页将随着文档一起打包,这是既不安全的!

6
1
分享到:
评论
2 楼 gao_xianglong 2013-02-13  
jackyrong 写道
如果是spring3,struts2这些类型的呢,如何用好这个工具?

如果是web项目,大部分人通常选测只测试Service层。要求严格的,会测试Controller层,Junit对Spring为提供很好的扩展测试功能。如果你要说覆盖率都是根据你的单元测试范围进行统计。
1 楼 jackyrong 2013-02-13  
如果是spring3,struts2这些类型的呢,如何用好这个工具?

相关推荐

    re-sign.jar+junit4.jar+robotium.jar

    在Android开发中,JUnit4版本允许开发者创建针对单个函数或方法的测试,以验证其功能是否符合预期。通过集成到构建流程中,可以自动执行这些测试,从而在代码更改后快速发现和修复问题。 3. **robotium.jar**: ...

    junit4.4.jar +easymock3.0.jar

    标题中的"junit4.4.jar +easymock3.0.jar"提及了两个重要的Java测试库:JUnit 4.4和EasyMock 3.0。这些是用于开发过程中的单元测试的关键工具。 JUnit是Java编程语言中最广泛使用的单元测试框架之一。它允许开发者...

    junit.jar + hamcrest-core.jar + hamcrest-library.jar

    Junit、hamcrest-core.jar和hamcrest-library.jar这三者是Java编程语言中进行单元测试的关键工具,尤其对于Java开发者来说,它们是不可或缺的。 首先,我们来详细了解一下Junit。Junit是一款开源的测试框架,它是...

    junit-4.12.jar + hamcrest-core-1.3.jar

    《Junit 4.12 和 Hamcrest Core 1.3:Java单元测试的重要伙伴》 在Java开发中,单元测试是确保代码质量的关键环节,它可以帮助开发者在早期发现并修复错误,避免了后期集成阶段可能出现的问题。在这里,我们要探讨...

    [原]深入JUnit4.x

    【深入JUnit4.x】—— 探索Java单元测试框架的核心 JUnit是Java开发中最常用的单元测试框架,尤其在JUnit4.x版本中,它引入了许多改进和特性,使得测试更加灵活和强大。这篇深入的文章将围绕JUnit4.x的核心概念、...

    junit5.jar

    JUnit Vintage则保留了对JUnit 4测试的支持,这意味着在JUnit 5环境中可以无缝运行JUnit 4编写的测试,确保了向新版本迁移的平滑过渡。 使用"junit5.jar"进行测试,需要将其添加到项目的类路径中。在Maven或Gradle...

    junit的jar包

    Files contained in junit4-4.8.2.jar: LICENSE.txt META-INF/MANIFEST.MF junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions...

    junit4.x使用指南-帮助文档。

    JUnit4.x是Java编程语言中最常用的单元测试框架之一,它为开发者提供了强大的工具来编写和运行测试用例,确保代码的质量和稳定性。本指南将深入介绍JUnit4.x的关键特性和使用方法,帮助开发者更好地理解和应用这个...

    ant-junit4.jar.zip

    《Ant与JUnit4结合使用详解》 在Java开发过程中,自动化构建工具Ant和单元测试框架JUnit4是不可或缺的两个部分。Ant-junit4.jar.zip是一个包含Ant和JUnit4相关依赖的压缩包,它使得开发者能够方便地在Ant构建环境中...

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-...

    junit4.x_en.chm

    junit4.x_en.chm英文帮助文档

    junit-4.12.jar + hamcrest 亲测可用的

    标题中的“junit-4.12.jar + hamcrest 亲测可用的”指的是一个包含Junit 4.12版本和Hamcrest 1.3版本的测试框架组合,这个组合经过验证是能够正常工作的。在Java开发中,单元测试是确保代码质量的重要环节,而Junit...

    junit-4.12.jar+hamcrest-core-1.3.jar JUnit单元测试必备jar包

    2. 在测试类中,使用`@RunWith(JUnit4.class)`注解指定使用JUnit 4运行器。 3. 编写测试方法,每个方法都使用`@Test`注解,并在方法内部使用Hamcrest的匹配器进行断言。 4. 运行测试类,JUnit会自动发现并执行所有的...

    junit4.0.zip

    JUnit 4.0 是一个广泛使用的Java编程语言的单元测试框架。这个压缩包"junit4.0.zip"包含了JUnit 4.0的所有组件和必要的库文件,使得开发者能够高效地编写和运行他们的测试用例,确保代码的质量和可靠性。 在Java...

    JUNIT4.X學習筆記(1)

    《JUNIT4.X学习笔记(1)》 在软件开发中,单元测试是确保代码质量的重要环节。JUnit作为Java领域最流行的单元测试框架,被广大开发者广泛使用。本文将主要探讨JUnit4.x版本的使用方法和核心概念,帮助读者更好地...

    Junit5.jar包,代码测试工具

    - JUnit5能够同时运行JUnit4和JUnit5的测试,使得迁移过程更为平滑。 为了在项目中使用JUnit5,你需要将`junit-jupiter-engine`和`junit-platform-launcher`依赖添加到你的构建系统中。例如,在Maven项目中,可以...

    junit-4.7.jar+junit-4.7-src.jar

    4. **断言改进**:JUnit 4.7 提供了更多的断言方法,如 `assertEquals`、`assertNull`、`assertTrue` 等,使得测试结果的判断更加直观和灵活。 5. **测试套件(Test Suites)**:通过 `@Suite` 注解,你可以将多个...

    JUnit 5.pdf

    JUnit Platform负责在JVM上启动测试框架,JUnit Jupiter包含新的编程和扩展模型,JUnit Vintage则提供了运行基于JUnit 3和JUnit 4的测试的能力。 JUnit 5在依赖管理方面提供了元数据和依赖关系图,旨在帮助开发者更...

    junit4.1.jar

    junit4的jar包,使用annotation进行junit测试!

Global site tag (gtag.js) - Google Analytics