美文网首页
单元测试-JUnit

单元测试-JUnit

作者: 张明学 | 来源:发表于2020-04-20 15:19 被阅读0次

    java单元测试是最小的功能单元测试代码, 单元测试就是针对单个java方法的测试。相比较于main方法进行测试,main方法会把测试代码和业务代码耦合在一起。并且JUnit单元测试可以设置期望值。

    Jar依赖

    <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.13</version>
    </dependency>
    

    断言

    断言的使用, 必须先引入必须的包

    import static org.junit.Assert.*;
    

    测试用例

    @Slf4j
    public class TestDemo1 {
    
        Val val = null;
    
        /**
         * 初始化非常耗时的资源, 例如创建数据库
         */
        @BeforeClass
        public static void beforeClass() {
            log.info("-->beforeClass");
        }
    
        /**
         * 单元测试执行之前执行,用于初始化测试资源
         */
        @Before
        public void before() {
            log.info("-->before");
            val = new Val();
        }
    
        /**
         * timeout设置超时时间
         */
        @Test(timeout = 300)
        public void test1() {
            log.info("单元测试1");
            Long result = val.parse("123");
            Assert.assertEquals(new Long(123), result);
        }
    
        /**
         * 期望出现异常NumberFormatException,没有异常则用户不通过
         */
        @Test(expected = NumberFormatException.class)
        public void test2() {
            log.info("单元测试2");
            Long result = val.parse("a");
            Assert.assertEquals(new Long(123), result);
        }
    
        /**
         * 单元测试执行完毕后执行,用于关于测试资源
         */
        @After
        public void after() {
            log.info("-->after");
        }
    
        /**
         * 清理@BeforeClass创建的资源, 例如创建数据库
         */
        @AfterClass
        public static void AfterClass() {
            log.info("-->AfterClass");
        }
    }
    

    结果:

    [    main]-->beforeClass
    [    main]-->before
    [    main]单元测试1
    [    main]-->after
    [    main]-->before
    [    main]单元测试2
    [    main]-->after
    [    main]-->AfterClass
    
    断言的常用方法:(org.junit.Assert)

    assertEquals(100, x): 断言相等
    assertArrayEquals({1, 2, 3}, x): 断言数组相等
    assertEquals(3.1416, x, 0.0001): 浮点数组断言相等
    assertNull(x): 断言为null
    assertTrue(x > 0): 断言为true
    assertFalse(x < 0): 断言为false;
    assertNotEquals(): 断言不相等
    assertNotNull(): 断言不为null

    异常测试

    异常测试可以通过@Test(expected=Exception.class), 对可能发生的每种类型的异常进行测试
    如果抛出了指定类型的异常, 测试成功
    如果没有抛出指定类型的异常, 或者抛出的异常类型不对, 测试失败

    @Before和@After

    在@Before方法中初始化测试资源
    在@After方法中释放测试资源
    @BeforeClass: 初始化非常耗时的资源, 例如创建数据库,需要static方法
    @AfterClass: 清理@BeforeClass创建的资源, 例如创建数据库,需要static方法。

    参数化测试

    @RunWith: 当类被@RunWith注释修饰, 或者类继承了一个被该注解类修饰的类, JUnit将会使用这个注解所指明的运行器(runner)来运行测试, 而不是JUni默认的运行器。如SpringBoot的单元测试:@RunWith(SpringRunner.class)

    超时测试

    @Test(timeout=1000)可以设置超时时间

    相关文章

      网友评论

          本文标题:单元测试-JUnit

          本文链接:https://www.haomeiwen.com/subject/enrdihtx.html