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

    使用单元测试的好处:方便查找到程序的问题所在之处。

    JUnit的好处:无需编写main()方法,即可对程序进行测试

    导包:导入Junit相关的jar包。实际测试中并未有下载,直接在Eclipse中设置即可。

    右键项目 >> Bulid Path >> Add Libraries...

    选择JUnit:

     选择合适的JUnit版本,这里我选择的是Junit5,Finally

     具体测试:

    编写被测试类:

    Calculator.java

    package test;
    
    public class Calculator {
    
        public int add(int a, int b) {
            return a + b;
        }
    
        public int sub(int a, int b) {
            return a - b;
        }
    }

    编写测试类:

    CalculatorTest.java

    package test;
    
    import org.junit.Assert;
    import org.junit.Test;
    
    public class CalculatorTest {
    
        @Test //此处是必须有的
        public void testAdd() {
            Calculator c = new Calculator();
            int result = c.add(1, 2);
            Assert.assertEquals(result, 3);
        }
    
        @Test //此处是必须有的
        public void testSub() {
            Calculator c = new Calculator();
            int result = c.sub(2, 1);
            Assert.assertEquals(result, 1);
        }
    
    }

    于CalculatorTest.java中右键 >> run as >> JUnit Test 运行结果如图:

     JUnit的几种类似@Test的注解:

    1. @Test:测试方法

      a)(expected = XXException.class)如果程序的异常和XXException.class 一样,则测试通过

      b)(timeout = 100)如果程序的执行能在100毫秒内完成,则测试通过

    2. @Ignore:被忽略的测试方法,加上之后,暂时不运行此段代码

    3. @Before:每一个测试方法之前都会运行。

    4. @After:每一个测试方法之后都会执行。

    5. @BeforeClass:方法必须是静态方法(并非用来测试静态方法的,而是进行测试的具体方法是静态的),所有测试开始之前运行。

    6. @AfterClass:方法必须是静态的(同上),所有测试结束之后运行

    实例:package test;

    import org.junit.After;
    import org.junit.AfterClass;
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    
    public class CalculatorTest {
    
        Calculator c = null;
    
        @BeforeClass
        public static void TestBeforeClass() {
            System.out.println("testBeforeClass()");
        }
    
        @Before
        public void testBefore() {
            System.out.println("testBefore()");
            c = new Calculator();
        }
    
        @Test
        public void testAdd() {
            int result = c.add(1, 2);
            System.out.println("testAdd()");
            Assert.assertEquals(result, 3);
        }
    
        @Test
        public void testSub() {
            int result = c.sub(2, 1);
            System.out.println("testSub()");
            Assert.assertEquals(result, 1);
        }
    
        @After
        public void testAfter() {
            System.out.println("testAfter()");
        }
    
        @AfterClass
        public static void testAfterClass() {
            System.out.println("testAfterClass()");
        }
    
    }
    //输出:

    /*
    * testBeforeClass()
    * testBefore()
    * testAdd()
    * testAfter()
    *
    * testBefore()
    * testSub()
    * testAfter()
    * testAfterClass()
    */

  • 相关阅读:
    RTP 时间戳的处理
    Linux下printf输出字体的特效
    C# 获取空闲端口及查看已用端口
    Linux C :遍历输出指定目录下的所有文件
    RTP视频传输播放延时(时间戳)
    Linux 写SD卡时数据异常
    WIN7 C# System.Runtime.InteropServices.COMException VLC HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)
    oracle分布式处理时报“ORA02041: 客户数据库未开始一个事务处理”解决办法 z
    js文件封装javascript在html中获取url参数
    Windows 7 和Windows 2008R2中的IIS7.5 z
  • 原文地址:https://www.cnblogs.com/MXming/p/14293543.html
Copyright © 2011-2022 走看看