zoukankan      html  css  js  c++  java
  • 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类中查阅断言方法。

     

     

  • 相关阅读:
    CODE[VS] 2506 可恶的体育老师
    CODE[VS] 3411 洪水
    CODE[VS] 2692 小明过生日
    CODE[VS] 2291 糖果堆
    CODE[VS] 2008 你已经爱我多久了
    忽然之间
    Amazing grace 奇异恩典
    无处安放
    AC日记
    AC日记
  • 原文地址:https://www.cnblogs.com/Mokaffe/p/4953692.html
Copyright © 2011-2022 走看看