`
独孤九剑行走江湖
  • 浏览: 37946 次
社区版块
存档分类
最新评论

JUnit入门

 
阅读更多

下面我们就演示一个在junit4下面的示例

一个方法类:

public class T {

public int add(int x, int y) {

return x + y;

}

public int divide(int x, int y) {

return x/y;

}
}

该方法的junit4测试类:

import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.lessThan;
import static org.junit.Assert.assertThat;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import com.bjsxt.junit4.T;

public class TTest {

@BeforeClass

public static void beforeClass() {
System.out.println("beforeClass");
}

@AfterClass
public static void afterClass() {
System.out.println("afterClass");
}

@Before
public void before() {
System.out.println("before");
}

@Test
public void testAdd() {
int z = new T().add(5, 3);
assertThat(z, is(8));
assertThat(z, allOf(greaterThan(5), lessThan(10)));
}

@Test(expected = java.lang.ArithmeticException.class, timeout = 100)
public void tDivide() {
int z = new T().divide(8, 0);
}

@After
public void after() {
System.out.println("after");
}
}

运行结果显示绿条,控制台输出:

beforeClass
before
after
before
After
afterClass

注:当然很多情况下,不是所有的注解都会用到,一般只使用 @Test注解就够了

我们可以看到,采用Annotation的JUnit已经不会霸道的要求你必须继承自TestCase了,而且测试方法也不必以test开头了,只要以@Test来描述即可。

从上面的例子可以看到在JUnit 4中还引入了一些其他的元数据,下面一一介绍:
@Before:
使用了该元数据的方法在每个测试方法执行之前都要执行一次。

@After:
使用了该元数据的方法在每个测试方法执行之后要执行一次。

@Test(expected=*.class)
在JUnit4.0之前,对错误的测试,我们只能通过fail来产生一个错误,并在try块里面assertTrue(true)来测试。现在,通过@Test元数据中的expected属性。expected属性的值是一个异常的类型


@Test(timeout=xxx):
该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在制定的时间之内没有运行完,则测试也失败。


@ignore:
该元数据标记的测试方法在测试中会被忽略。,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。

另外

JUnit4 放弃旧的断言,使用hamcrest断言
Junit4下载地址:
http://sourceforge.net/projects/junit/files/junit/,这里面有很多版本,目前最新的是junit4.8.1 .
Hamcrest下载地址:
http://code.google.com/p/hamcrest/downloads/list,最新的是1.3版本,下载一个Hamcrest all-in-one Jar的最新版本即可.

JUnit4 中只使用assertThat方法足矣
assertThat方法需要使用hamcrest的匹配方法:
示例

assertThat( n, allOf( greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt" ) );
assertThat( str, not( "bjxxt" ) );


assertThat( str, containsString( "bjsxt" ) );
assertThat( str, endsWith("bjsxt" ) );
assertThat( str, startsWith( "bjsxt" ) );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt" ) );
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt" ) );


assertThat( d, closeTo( 3.0, 0.3 ) );
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );
assertThat( d, lessThanOrEqualTo (16.0) );


assertThat( map, hasEntry( "bjsxt", "bjsxt" ) );
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );
assertThat( map, hasValue ( "bjsxt" ) );


Failure和Error
Failure是指测试失败
Error是指测试程序本身出错

JUnit4 Annotation
@Test: 测试方法
(expected=XXException.class)
(timeout=xxx)
@Ignore: 被忽略的测试方法
@Before: 每一个测试方法之前运行
@After: 每一个测试方法之后运行
@BeforeClass: 所有测试开始之前运行 //必须定义为static方法
@AfterClass: 所有测试结束之后运行 //必须定义为static方法

运行多个测试
选中要测试类所在的包,右键,选择“Run as”,再选择“Run Open Dialog”,在弹出框中再选择下面一个单选框“Run all tests in the selected project,package or source folder”,最后再选择最右边的“Run”按钮即可。

遵守约定,比如:
类放在test包中
类名用XXXTest结尾
方法用testMethod命名

其他测试框架
TestNG

转载自http://hi.baidu.com/suny_duan/blog/item/7e905a943de97d40d0135e3f.html

分享到:
评论

相关推荐

    JUnit入门及简单使用

    JUnit 是一个广泛使用的开源Java测试框架,由Erich Gamma和Kent Beck开发,主要用于进行回归测试,确保代码在修改后仍能按预期工作。JUnit测试主要是白盒测试,因为程序员对被测试的软件内部结构有深入理解,能够...

    jUnit入门教程 jUnit教程

    【jUnit入门教程 - jUnit教程】 jUnit是一款广泛应用于Java编程语言的单元测试框架,它使得开发者能够方便地编写和执行针对代码功能的测试用例。本教程旨在为初学者提供一个jUnit的基础入门指南,帮助理解如何利用...

    junit 入门培训ppt

    本文将深入探讨JUnit入门培训的关键概念和技术。 首先,我们要理解什么是Test Driven Development(TDD),即测试驱动开发。TDD是一种软件开发方法论,它提倡在编写实际业务代码之前先编写测试。通过这种方式,...

    Junit入门练习代码

    本资源“Junit入门练习代码”旨在帮助初学者掌握JUnit的基本概念和使用方法,通过实践来加深理解。下面我们将深入探讨JUnit的相关知识点。 1. **JUnit简介**:JUnit是Java语言中的一个开源测试框架,由Ernst Leiss...

    Junit入门培训资料(断言相关)

    ### Junit入门培训资料(断言相关):深入解析与应用 #### Junit概述与重要性 JUnit,作为由Kent Beck和Erich Gamma共同开发的开源Java测试框架,已成为Java开发人员进行单元测试的首选工具。它不仅是Java编程语言...

    JUnit入门资料合集

    这个“JUnit入门资料合集”看起来包含了多个部分,涵盖了从软件架构到内部机制,再到讲课文档的全面教程。 1. **软件架构**: JUnit的架构基于设计模式,主要是工厂模式和装饰器模式。它通过`Test`接口定义了测试...

    Junit入门及应用

    【JUnit入门及应用】 JUnit是Java开发者常用的单元测试框架,它的主要目的是为了编写和执行可重复的测试,确保代码的质量和稳定性。作为一个开源项目,JUnit是xUnit家族的一员,适用于进行白盒测试和回归测试。 **...

    Junit 入门与提高实例代码

    《Junit 入门与提高实例代码》是针对Java开发者,特别是J2EE环境下的测试工程师的一份宝贵资源。这份资料旨在帮助初学者快速掌握Junit的使用,并通过实例提升测试技能,确保J2EE应用的质量和稳定性。下面将详细阐述...

    Junit入门实验Junit入门实验

    这个"Junit入门实验"旨在帮助初学者理解和掌握JUnit的基本概念和使用方法。通过这个实验,你将学习如何设置测试环境,创建测试类,编写测试用例,并理解断言和异常处理。 1. **安装与引入JUnit** 在开始之前,你...

    JUnit 入门教程

    ### JUnit入门教程知识点概述 #### 一、JUnit简介 - **定义**:JUnit是一种针对Java编程语言的单元测试框架。它在测试驱动开发(TDD)的发展中扮演了重要角色,并且是XUnit家族的一员,这个家族起源于JUnit。 - **...

    JUnit入门,非常实用!

    JUnit 是一个广泛使用的Java编程语言的单元测试框架,它的主要目标是帮助开发者编写可重复运行的测试用例,以确保代码的正确性和稳定性。JUnit 的出现源于Erich Gamma和Kent Beck两位大师,他们是面向对象设计模式和...

    junit入门资料

    总之,这个"junit入门资料"应该包含了一系列的实践示例和讲解材料,帮助你从零开始学习JUnit,逐步掌握单元测试的技巧和最佳实践,从而提升你的Java编程能力。通过深入学习和实践,你将能够有效地利用JUnit进行高...

Global site tag (gtag.js) - Google Analytics