zoukankan      html  css  js  c++  java
  • Java Junit单元测试

    Junit单元测试分类

    • 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。

    • 白盒测试:需要写代码的。关注程序具体的执行流程。

    Junit使用:白盒测试

    步骤

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

      • 建议:

        测试类名:被测试的类名Test(如CalculatorTest)

        包名:xxx.xxx.xx.test (如view.study.demo43.test

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

      •  建议:

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

        返回值:void

        参数列表:空参

    3. 给方法加@Test

    4. 导入junit依赖环境

    举例

    创建一个加减法类,我们来测试这个类:

    package view.study.demo44;
    
    public class Calculator {
    
        /**
         * 加法
         */
        public static int add(int a, int b) {
            return a + b;
        }
    
        /**
         * 减法
         */
        public static int sub(int a, int b) {
            return a - b;
        }
    
    }

    传统的测试方式:

    package view.study.demo44;
    
    public class CalculatorTest {
        public static void main(String[] args) {
            int add = Calculator.add(10, 20);
    
            int sub = Calculator.sub(10, 20);
    
            System.out.println(add);
            System.out.println(sub);
        }
    }

    Junit使用:白盒测试

    import org.junit.Test;
    import view.study.demo44.Calculator;
    
    public class CalculatorTest {
        /**
         * 测试add()方法
         */
        @Test
        public void testAdd() {
            int add = Calculator.add(10, 20);
            System.out.println(add);
        }
    
        /**
         * 测试sub()方法
         */
        @Test
        public void testSub() {
            int sub = Calculator.sub(10, 20);
            System.out.println(sub);
        }
    }

    注意:

    这里需要添加:
    @Test 进行标示

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

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

    还是上面的例子:

    package view.study.demo44.test;
    
    import org.junit.Assert;
    import org.junit.Test;
    import view.study.demo44.Calculator;
    
    public class CalculatorTest {
        /**
         * 测试add()方法
         */
        @Test
        public void testAdd() {
            int add = Calculator.add(10, 20);
            Assert.assertEquals(30, add);
            System.out.println(add);
        }
    
        /**
         * 测试sub()方法
         */
        @Test
        public void testSub() {
            int sub = Calculator.sub(10, 20);
            Assert.assertEquals(30, sub);
            System.out.println(sub);
        }
    }

    从代码中可以看出,测试add()方法,是正确的。而测试sub()方法,会抛出错误,很明显(10 - 20)的值是 -10 ,不是30,抛出错误如下:

    @Before 和 @After

    1. @Before:

      修饰的方法会在测试方法之前被自动执行

    2. @After:

      修饰的方法会在测试方法执行之后自动被执行

    如上面,测试add()方法:

    package view.study.demo44.test;
    
    import org.junit.After;
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Test;
    import view.study.demo44.Calculator;
    
    public class CalculatorTest {
        /**
         * 初始化方法
         * 用于资源的申请,所有测试方法在执行之前都会先执行该方法。
         */
        @Before
        public void init() {
            System.out.println("初始化方法 __init__ ");
        }
    
        /**
         * 释放资源方法
         * 在所有测试方法执行之后,都会自动执行该方法。
         */
        @After
        public void close() {
            System.out.println("释放资源方法 __close__ ");
        }
        
        /**
         * 测试add()方法
         */
        @Test
        public void testAdd() {
            int add = Calculator.add(10, 20);
            Assert.assertEquals(30, add);
            System.out.println(add);
        }
    
    }

    进行测试,结果如下:

               

  • 相关阅读:
    匈牙利算法-二分图的最大匹配
    UOJ 407(IOI2018 D1T3)
    UOJ 460
    UOJ 405(IOI2018 D1T1)
    Codeforces 1110E
    2.文件结构
    1.常用快捷键
    Python3.x和Python2.x的差异
    javascript 常用内置对象
    94. Binary Tree Inorder Traversal(非递归实现二叉树的中序遍历)
  • 原文地址:https://www.cnblogs.com/liyihua/p/12300839.html
Copyright © 2011-2022 走看看