单元测试框架主要完成三件事

  • 提供用例组织与执行
  • 提供丰富的比较方法
  • 提供丰富的日志

Junit 单元测试框架解析

常用注解:

  • @Test:测试方法
    (A) (expected=XXEception.class)

(B) (timeout=xxx)

  • @Ignore: 被忽略的测试方法
  • @Before: 每一个测试方法之前运行。
  • @After : 每一个测试方法之后运行。
  • @BefreClass 所有测试开始之前运行。
  • @AfterClass 所有测试结果之后运行。
package com.junit.test;
import static org.junit.Assert.*;
import static org.hamcrest.Matcher.*;
import org.junit.Test; import org.junit.Before; 
import org.junit.BeforeClass; 
import org.junit.AfterClass;

import org.junit.After; 
import org.junit.Ignore;
import com.junit.test.count; 

public class tests {
    @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"); 
    }

    @After //每个测试方法运行之后运行 
    public void after(){
        System.out.println("==after"); 
    }

    @Test
    public void testAdd() {
    System.out.println("test Run through");
    }

    @Test ()
    public void testdivision(){
    System.out.println("in Test Division"); }

    @Ignore //表示这个方法是不被运行的
    @Test
    public void testDivide(){
    System.out.println("test Ignore");
    }
}

运行结果:

--beforeClass
==before
test Run through
==after
==before
in Test Division
==after
--afterClass

错误类型:

  • Errors:表示程序本身错误。
  • Failures: 是指测试失败。

断言方法:

assertArrayEquals(expecteds, actuals):查看两个数组是否相等。
assertEquals(expected, actual):查看两个对象是否相等。
assertNotEquals(first, second):查看两个对象是否不相等。
assertNull(object):查看对象是否为空。
assertNotNull(object):查看对象是否不为空。
assertSame(expected, actual):查看两个对象的引用是否相等。类似于使用“==”比较两个对象
assertNotSame(unexpected, actual):查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
assertTrue(condition):查看运行结果是否为 true。
assertFalse(condition):查看运行结果是否为 false。
assertThat(actual, matcher):查看实际值是否满足指定的条件。
fail():让测试失败。

批量执行测试用例

  1. 创建一个空类作为测试套件的入口;
  2. 使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuitClasses 修饰这个空类
  3. 将 org.junit.runners.Suite 作为参数传入给注解 RunWith,以提示 Junit 为此类测试使用套件运行器执
    行。
  4. 将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数
  5. 保证这个空类使用 public 修饰,而且存在公开的不带任何参数的构造函数
package com.junit.test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class) 
@SuiteClasses({
    test.class, 
    tests.class 
    })
public class testAll { 
}

明天是再读TestNG!