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方法会表示为一个测试方法。

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

 

2.@Before

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

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

 

3.@After

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

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

 

4.@BeforeClass

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

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

 

5.@AfterClass

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

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

 

Junit常用断言

1.assertEquals

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

  1. @Test
  2. public void test() {
  3. String obj1 = "junit";
  4. String obj2 = "junit";
  5. assertEquals(obj1, obj2);
  6. }

 

2.assertTrue

断言一个条件为真。

  1. @Test
  2. public void test() {
  3. int var1 = 1;
  4. int var2 = 2;
  5.  
  6. assertTrue(var1 var2);
  7.  
  8. }

 

3.assertNotNull

断言一个对象不为空。

  1. @Test
  2. public void test() {
  3. String obj1 = "junit";
  4.  
  5. assertNotNull(obj1);
  6. }

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

 

4.assertSame

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

  1. @Test
  2. public void test() {
  3. String obj3 = "test";
  4. String obj4 = "test";
  5. assertSame(obj3, obj4);
  6. }

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

 

5.assertArrayEquals

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

  1. @Test
  2. public void test() {
  3. int[] arithmetic1 = { 1, 2, 3 };
  4. int[] arithmetic2 = { 1, 2, 3 };
  5.  
  6. assertArrayEquals(arithmetic1, arithmetic2);
  7. }

 

 

Junit使用案例

1.创建被测试类 Calculator

  1. public class Calculator {
  2. //加法
  3. public int add(int a, int b) {
  4. return a + b;
  5. }
  6. }

2.创建测试用例

  1. import com.mikechen.junit.Calculator;
  2. import org.junit.After;
  3. import org.junit.Assert;
  4. import org.junit.Before;
  5. import org.junit.Test;
  6.  
  7. public class CalculatorTest {
  8. @Test
  9. public void testAdd() {
  10. System.out.println("testAdd执行了!");
  11. Calculator calculator = new Calculator();
  12. int res = calculator.add(1, 2);
  13. //第一个参数值是预期结果,第二个参数是实际结果
  14. Assert.assertEquals(3, res);
  15. }
  16.  
  17. @Before
  18. public void init() {
  19. System.out.println("init执行了!");
  20. }
  21.  
  22. @After
  23. public void close() {
  24. System.out.println("close执行了!");
  25. }
  26. }

3.测试运行结果

  1. intit执行了!
  2. testAdd执行了!
  3. close执行了!

 

Junit总结

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

评论交流
    说说你的看法
欢迎您,新朋友,感谢参与互动!