junit 4.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下载


你可能感兴趣的:(junit 4.8.2简单入门)