Junit 4学习笔记(一)简介、注解和断言

Junit 

导入jar文件:

junit-4.12.jar
//junit-4.11之后需要自己导入该包
hamcrest-core-1.3.jar

一、简介

JUnit是一个Java编程语言编写的单元测试框架。是xUnit测试框架家族中最为成功的一个。JUnit是用于编写和运行可重复的自动化测试的开源测试框架, 这样可以保证我们的代码按预期工作。

JUnit为我们提供了如下功能:

  • 断言测试预期结果。
  • 测试功能共享通用的测试数据。
  • 测试套件轻松地组织和运行测试。
  • 图形和文本测试运行。

JUnit可以用于测试如下程序单元:

  • 整个对象
  • 对象的方法,或几个交互的方法
  • 几个对象之间的互动(交互)

二、Junit注解

JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有:

  • @BeforeClass 全局只会执行一次,而且是第一个运行
  • @Before 在测试方法运行之前运行
  • @Test 测试方法
  • @After 在测试方法运行之后允许
  • @AfterClass 全局只会执行一次,而且是最后一个运行
  • @Ignore 忽略此方法

先上一个栗子,测试一下上边的注解:

被测试类:Calculator

package main.java.StuJunit;

public class Calculator {

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

    public int subtraction(int a,int b){
        return a-b;
    }

    public int multiplication(int a,int b){
        return  a*b;
    }

    public double division(double a,double b){
        return a/b;
    }
}

单元测试类:

package test.java.TestJunit;

import main.java.StuJunit.Calculator;
import org.junit.*;

public class Test_Test {
    Calculator calculator = new Calculator();

    @BeforeClass
    public static void testBeforeClass(){
        System.out.println("BeforeClass...");
    }

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

    @Test
    public void test1(){
        System.out.println(calculator.addtion(2,4));
    }

    @Ignore
    @Test
    public void test2(){
        System.out.println(calculator.multiplication(3,3));
    }

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

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

这里有个点需要注意:BeforeClass 和 AfterClass 在类运行时全局只执行一次,所以修饰的方法应该为静态方法,否则会出现如下异常:

异常:
java.lang.Exception: Method testBeforeClass() should be static

被@Ignore标注的测试方法,将不会被执行,但是会在控制台打印出 “Test ignored.”信息,我们还可以给@Ignore传递参数,定制忽略信息,如下:

@Ignore("test2 被忽略了...")

三、断言Assert

Junit测试框架中Assert类就是实现断言的工具,主要作用如下:

  • 单元测试用于判断某个特定条件下某个方法的行为;
  • 执行单元测试为了证明某段代码的执行结果和期望的一致;

下面介绍Junit测试库中几种常用的断言。

断言描述
void assertEquals([String message], expected value, actual value)断言两个值相等。值可能是类型有 int, short, long, byte, char or java.lang.Object. 第一个参数是一个可选的字符串消息
void assertTrue([String message], boolean condition)断言一个条件为真
void assertFalse([String message],boolean condition)断言一个条件为假
void assertNotNull([String message], java.lang.Object object)断言一个对象不为空(null)
void assertNull([String message], java.lang.Object object)断言一个对象为空(null)
void assertSame([String message], java.lang.Object expected, java.lang.Object actual)断言两个对象引用相同的对象
void assertNotSame([String message], java.lang.Object unexpected, java.lang.Object actual)断言,两个对象不是引用同一个对象
void assertArrayEquals([String message], expectedArray, resultArray)断言预期数组和结果数组相等。数组的类型可能是 int, long, short, char, byte or java.lang.Object.

断言的简单使用示例:

使用某个断言时,需要我们静态导入该断言,断言都在org.junit.Assert类中。如下:

import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;

使用:

package test.java.TestJunit;

import org.junit.Test;

import static org.junit.Assert.*;

public class Test_Assert {
    @Test
    public void stuAssert(){
        String str1 = "testStr";
        String str2 = new String("testStr");
        String str3 = str1;
        String str4 = null;

        //断言两个对象不相等
        assertNotSame("str1和str2不相等",str1,str2);
        //断言两个对象相等
        assertSame(str1,str3);
        //断言两个对象的值相等
        assertEquals(str1,str2);
        //断言一个对象不为空
        assertNotNull(str2);
        //断言一个对象为空
        assertNull(str4);
        //断言一个条件为true
        assertTrue(str1.length()>3);
        //断言一个条件为false
        assertFalse(str1==str2);
        //断言两个数组的值相等
        int[] a = new int[]{1,2,3,4};
        int[] b = new int[]{1,2,3,4};
        //assertSame(a,b);对象不相等
        assertArrayEquals(a,b);
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值