JUnit4-初识单元测试

Catalog

JUnit4的特性

JUnit4实战操作

 

JUnit4的特性

 JUnit4 最大的特性是使用注解,很多实际的执行过程在JUnit的后台已经完成,而且test case (测试用例)不需要继承TestCase,

只需要在test case 的方法前加上@Test 注释即可。

每个测试类都需要导入最基本的2个测试包:

import static org.junit.Assert.*;
import org.junit.Test;

第一个:静态导入断言包

第二个:导入Test注释包,如果用到其他的注释,如@Before,@After等,则需要导入相应的包,

            也可以直接导入 import org.junit.*;  " * " 代表包含了所有的注释。

第三个:测试方法对于名字没有任何要求,只要有@Test 就可以证明是一个测试方法,但是测试方

            法不能有返回值,这个规定不能违反,否则在运行时会抛出异常。

即:在一个测试类中,所有被@Test注解所修饰的public,void方法都是test  case,可以被JUnit所执行。

第四个:@Ignore 注释添加在一个测试方法上,表明这个测试方法被忽略,放在一个测试类上,表

            明这个测试类中的所有测试方法都被忽略。

第五个:多个测试类放在一起执行

可以使用 org.junit.runner.JUnitCore.runClasses(TestClass1.class , TestClass2.class , ...).

利用这个把test case的类放进去,然后放在main()方法里面执行。

 

JUnit4实战操作

选中需要测试的类,点击右键,New 一个 JUnit Test Case。

序号1.测试类一般单独放在一个源文件夹Source folder。

序号2.测试类所在的包,一般和被测试的类所在的包同名。

序号3.测试的名称,默认是被测试的类的名称后面加上Test。

序号4.需要添加的一些方法,这四个方法都有对应的注释。

然后点击右下角的next,选择要测试的方法,最后finish。

 

简单的需要被测试的类 MathDemo

public class MathDemo {
    
    public int add(int a , int b){
        return a+b;
    }
    public int div(int a , int b ){
        return a/b;
    }

}

对应的测试类 MathDemoTest

public class MathDemoTest {
    MathDemo demo;    
    @Before
    public void setUp(){
        System.out.println("Set up ...");
        demo  = new MathDemo();
    }    
    @After
    public void tearDown(){
        System.out.println("Done...");
        demo = null;
    }
    @Test
    public void testAdd() {
        
        int expetected = 1;
        int trueValue = demo.add(1, 1);
        //断言方法
        assertEquals("你好像写错了",expetected, trueValue);
    }
    @Test
    public void testDiv() {
        int expected = 1;
        int trueValue = demo.div(1, 1);
        assertEquals(expected, trueValue);
    }

}

 在eclipse运行该测试用例

 对上面测试用例截图分析:

  1. 大红色方框内容区域
    • Errors 为 0 , 表示程序本身没有出错。一般出现Error错误时,说明是程序没有考虑到的情况,在断言前程序因为某种错误而终止。
    • Failures 为1 , 说明有一个测试失败,预期的结果与实际运行单元的结果不一致导致失败。
    • Failure 对应的状态 testAdd有个小×,成功的状态是绿色的√,还有一种状态是 忽略状态,
  2. 玫红色方框内容区域
    • setUp()方法对应的注释是 @Before;在每个测试方法开始之前都会执行。
    • tearDown() 方法对应的注释是 @After;在每个测试方法结束之后都会执行。
    • 控制台Console中打印了两遍,说明在每个测试方法之前, 注释@Before和@After对应的方法都会执行一次。
  3. 蓝色方框区域内容
    • 在测试方法时,可以使用很多断言方法,常用的断言介绍:
      • assertEquals                ([String message],Object target,Object result)   target与result不相等,中断测试方法,输出message
      • assertTrue/False          ([String message],Boolean result)   Result为 false/true,中断测试方法,输出message
      • assertNotNull/Null       ([String message],Obejct result)   Retult= = null/result!=null,中断测试方法,输出message
      • assertSame/NotSame  (Object target,Object result)   Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
      • assertThat                    ([String reason] , Object actual, Matcher<? super Object> matcher),用的是match的形式。
      • fail                                ([String message])  中断测试方法,输出message,Fail  让测试失败,并给出指定信息。

   JUnit提供很多种Match,其中 CoreMatchers 是其中一个比较完善的实现类。所以可以从CoreMatchers类中查阅断言方法。

 

 

原文地址:https://www.cnblogs.com/Mokaffe/p/4953692.html