junit4.8.2入门应用

一 概述
junit介绍
    JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
junit特性
  JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:   
1、用于测试期望结果的断言(Assertion)   
2、用于共享共同测试数据的测试工具   
3、用于方便的组织和运行测试的测试套件   
4、图形和文本的测试运行器
junit优点
  另外junit是在xp编程和重构(refactor)中被极力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率,但是实际上编写测试代码也是需要耗费很多的时间和精力的,那么使用这个东东好处到底在哪里呢?笔者认为是这样的:
通俗解释
1.根据期望结果进行测试
2.多个方法一起运行,而不是像main一样,只能运行一个
3.直观的运行结果
4.规范的测试代码
二 第一个junit4程序
    1)引入包junit-4.8.2.jar
hamcrest-all-1.2.jar
    2)代码JUnit4 HelloWorld
    直接运行类ArithmeticTest.java就可以看到结果.
package com.huaxin.phl;

public class Arithmetic {

	public int add(int a, int b) {
		return a + b;
	}

	public String getString() {
		return "my name is phl!!!";
	}
}


package com.huaxin.test;

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.huaxin.phl.Arithmetic;

public class ArithmeticTest {
	
	@BeforeClass
	public static void beforeClass(){
		System.out.println("junit4.8.2 is begin!");
	}
	@AfterClass
	public static void afterClass(){
		System.out.println("junit4.8.2 is end!");
	}
	
	@Ignore
	public void testIgnore(){
		System.out.println("testIgnore!");
	}
	
	@Test
	public void testAdd() {
		System.out.println("testAdd!!");
		assertThat(new Arithmetic().add(4, 3), is(7));
	}

	@Test
	public void testLength() {
		System.out.println("testLength!!");
		assertThat(new Arithmetic().getString(),containsString("phl"));
	}
}

   
3)assertThat
使用hamcrest的匹配方法,更自然
a)
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" ) );

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

c)
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) );

d)
assertThat( map, hasEntry( "bjsxt", "bjsxt" ) );
assertThat( iterable, hasItem ( "bjsxt" ) );
assertThat( map, hasKey ( "bjsxt" ) );
assertThat( map, hasValue ( "bjsxt" ) );
    4)Failure和Error
1.Failure是指测试失败
2.Error是指测试程序本身出错
    5)JUnit4 Annotation
1.@Test: 测试方法
a)(expected=XXException.class)
b)(timeout=xxx)
2.@Ignore: 被忽略的测试方法
3.@Before: 每一个测试方法之前运行
4.@After: 每一个测试方法之后运行
5.@BeforeClass: 所有测试开始之前运行
6.@AfterClass: 所有测试结束之后运行
    6)运行多个测试
    7)注意1.遵守约定,比如:
a)类放在test包中
b)类名用XXXTest结尾
c)方法用testMethod命名
    8)其他框架TestNG
   

你可能感兴趣的:(框架,JUnit,软件测试,单元测试,XP)