Junit单元测试详解(5大注解断言与用法步骤)

Junit单元测试详解(5大注解断言与用法步骤)-mikechen

Junit简介

JUnit 是一个 Java 编程语言的单元测试框架,由 Erich Gamma 和 Kent Beck 与1997年开发完成。

JUnit是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作,JUnit可广泛用于工业和作为支架(从命令行)或IDE(如Eclipse)内单独的Java程序。

 

JUnit的特点

  • JUnit是用于编写和运行测试的开源框架;
  • 提供了注释,以确定测试方法;
  • 提供断言测试预期结果;
  • 提供了测试运行的运行测试;
  • JUnit测试让您可以更快地编写代码,提高质量;
  • JUnit是优雅简洁。它是不那么复杂以及不需要花费太多的时间;
  • JUnit测试可以自动运行,检查自己的结果,并提供即时反馈;
  • JUnit测试可以组织成测试套件包含测试案例,甚至其他测试套件;
  • Junit显示测试进度的,如果测试是没有问题条形是绿色的,测试失败则会变成红色。

 

Junit常用注解

首先介绍 Junit 的几种类似于@Test 的注解:

1.@Test

使用该注解标注的public void方法会表示为一个测试方法。

@Test
public void add() {
    example test = new example();
    assertEquals(5,test.add(1,4));
}

 

2.@Before

表示在任意使用@Test注解标注的public void方法执行之前执行。

@Before
public void beforeTest(){
    System.out.println("test begin");
}

 

3.@After

表示在任意使用@Test注解标注的public void方法执行之后执行。

@After
public void afterTest(){
    System.out.println("test begin");
}

 

4.@BeforeClass

在类中的任意public static void方法执行之前执行(只执行一次)。

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

 

5.@AfterClass

表示在类中的任意public static void方法执行之后执行。

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

 

Junit常用断言

1.assertEquals

断言两个值相等,值可能是类型有 int, short, long, byte, char or java.lang.Object.,第一个参数是一个可选的字符串消息。

    @Test
    public void test() {
        String obj1 = "junit";
        String obj2 = "junit";	
        assertEquals(obj1, obj2);
    }

 

2.assertTrue

断言一个条件为真。

    @Test
public void test() {
    int var1 = 1;
    int var2 = 2;

    assertTrue(var1  var2);

}

 

3.assertNotNull

断言一个对象不为空。

    @Test
    public void test() {
        String obj1 = "junit";

        assertNotNull(obj1);
    }

同理,assertNull,就是断言对象为空。

 

4.assertSame

断言,两个对象引用相同的对象。

    @Test
    public void test() {
        String obj3 = "test";
        String obj4 = "test";
    
        assertSame(obj3, obj4);
    }

同理,assertNotSame,就是两个对象引用不相同的对象。

 

5.assertArrayEquals

断言预期数组和结果数组相等,数组的类型可能是 int, long, short, char, byte or java.lang.Object。

    @Test
public void test() {
    int[] arithmetic1 = { 1, 2, 3 };
    int[] arithmetic2 = { 1, 2, 3 };

    assertArrayEquals(arithmetic1, arithmetic2);
}

 

 

Junit使用案例

1.创建被测试类 Calculator

public class Calculator {
    //加法
    public int add(int a, int b) {
        return a + b;
    }
}

2.创建测试用例

import com.mikechen.junit.Calculator;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class CalculatorTest {
    @Test
    public void testAdd() {
        System.out.println("testAdd执行了!");
        Calculator calculator = new Calculator();
        int res = calculator.add(1, 2);
        
        //第一个参数值是预期结果,第二个参数是实际结果
        Assert.assertEquals(3, res);
    }

    @Before
    public void init() {
        System.out.println("init执行了!");
    }

    @After
    public void close() {
        System.out.println("close执行了!");
    }
}

3.测试运行结果

intit执行了!
testAdd执行了!
close执行了!

 

Junit总结

本篇主要讲解了Junit的特点,以及常用注解与测试用例,希望对你了解Junit单元测试有所帮助!

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法