zoukankan      html  css  js  c++  java
  • Junit单元测试 @Before和@After

    1.测试分类

    •  黑盒测试:不需要写代码,看程序是否能够输出期望的值
    • 白盒测试:需要写代码。关注程序具体的执行流程

    Junit就是白盒测试

    2.Junit使用

    步骤:

       (1)定义一个测试类(测试用例)

        * 建议:

          * 测试名:被测试的类名Test     CalulatorTest

          * 包名:xxx.xxx.xxx.test    cn.company.test

       (2)定义测试方法:可以独立运行

        * 建议:

          * 方法名:test测试的方法名  testAdd()

          * 返回值:void

          * 参数列表:空参

       (3)给方法加@test

       (4)导入Junit依赖环境

    判定结果:

      * 红色:失败

      * 绿色:成功

      * 一般我们会使用断言操作来处理结果

        * Assert.assertEquals(期望的结果,运算的结果)

    package demo01;
    
    public class Calculator {
        /**
         * 加法
         *
         * @param a
         * @param b
         * @return
         */
        public int add(int a, int b) {
            return a + b;
        }
    
        /**
         * 减法
         *
         * @param a
         * @param b
         * @return
         */
        public int sub(int a, int b) {
            return a - b;
        }
    
    }
    

      

    package test;
    
    import demo01.Calculator;
    
    import org.junit.Test;
    
    public class CalculatorTest {
        /**
         * 测试add方法
         */
        @Test
        public void testAdd() {
            System.out.println("我被执行了");
            // 1.创建计算器对象
            Calculator c = new Calculator();
            // 2.调用add
            int result = c.add(1, 2);
            System.out.println(result);
        }
    }
    

      

    运行结果绿色

     当被测试的类中有异常,会变成红色

     一般情况下,我们不会在单元测试中进行输出(System.out.println(result);),而是使用断言

    因为输出的结果,我们有时候并不知道结果是否正确

    我断言这个结果是3,会把断言的结果与真正的结果比,如果两个是一样的,成功了,就是绿色,失败了就是红色

     运行结果:

     一个测试类中可以测试多个方法,不用像之前的那样只能有一个main方法,测试一个方法,就把其他方法都注释掉了。

    3.@Before和@After

    @Before  修饰的方法,会在测试方法之前被自动执行,所有测试方法在执行之前都会执行该方法

    @After  修饰的方法,会在测试方法执行之后自动被执行,在所有测试方法执行完之后,都会自动执行该方法

     无论测试方法是否会出现异常,这两个修饰的方法总是会自动执行的。

    import demo01.Calculator;
    
    import org.junit.After;
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Test;
    
    public class CalculatorTest {
    
        /**
         * 初始化方法
         * 用于资源申请,所有测试方法在执行之前都会先执行该方法
         */
        @Before
        public void init() {
            System.out.println("init...");
        }
    
        /**
         * 释放资源方法
         * 在所有测试方法执行完后,都会自动执行该方法
         */
        @After
        public void close() {
            System.out.println("close...");
        }
    
    
        /**
         * 测试add方法
         */
        @Test
        public void testAdd() {
            System.out.println("testAdd...");
            // 1.创建计算器对象
            Calculator c = new Calculator();
            // 2.调用add
            int result = c.add(1, 2);
            Assert.assertEquals(3, result);
        }
    
        @Test
        public void testSub() {
            Calculator calculator = new Calculator();
            int result = calculator.sub(1, 2);
            System.out.println("testSub...");
            Assert.assertEquals(-1, result);
        }
    }
    

     

     

  • 相关阅读:
    【60.97%】【BZOJ 1925】 [Sdoi2010]地精部落
    【14.06%】【hdu 5904】LCIS
    【50.40%】【BZOJ 4553】[Tjoi2016&Heoi2016]序列
    【52.55%】【BZOJ 4520】K远点对
    洛谷——P2446 [SDOI2010]大陆争霸
    Python模块之re
    Docker从入门到实战
    分析增加站点权重的四大切入点(转载)
    远程桌面连接不上|windows server 2003 sp2 termdd.sys(转载)
    不同服务器数据库之间的数据操作(转载)
  • 原文地址:https://www.cnblogs.com/GumpYan/p/13855831.html
Copyright © 2011-2022 走看看