码迷,mamicode.com
首页 > 其他好文 > 详细

JUnit 异常测试

时间:2020-04-02 21:06:50      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:class   eof   new   throw   img   inf   lse   oid   art   

JUnit 异常测试

  1. 上古写法
    @Test
    void name() {
        boolean hasException = false;
        String exceptionMessage = null;
        try {
            check();
        } catch (RuntimeException e) {
            hasException = true;
            exceptionMessage = e.getMessage();
        }
        assertEquals("runtime", exceptionMessage);
        assertTrue(hasException);
    }

    void check() {
        throw new RuntimeException("runtime");
    }
  1. 普通写法(易错的)
    check message 和异常类型
   @Test
   void name() {
      assertThrows(RuntimeException.class, () -> check(), "aaa");
   }

   void check() {
       throw new RuntimeException("runtime");
   }

这个测试我们发现异常message 不对但是测试也能过。
扒一扒源码
技术图片

发现消费message 居然测试不是异常的消息,而是异常不是期待的,和没有异常的情况去消费的。
2.1 普通写法

   @Test
    void name() {
        final RuntimeException runtimeException = assertThrows(RuntimeException.class, () -> check());
        assertEquals("runtime", runtimeException.getMessage());
    }

    void check() {
        throw new RuntimeException("runtime");
    }

3.流式写法

     @Test
    void name() {
        assertThatThrownBy(() -> check())
            .isInstanceOf(RuntimeException.class)
            .hasMessage("runtime");
    }

    void check() {
        throw new RuntimeException("runtime");
    }

个人认为流式写法目前的认知范围内是最优雅的。

JUnit 异常测试

标签:class   eof   new   throw   img   inf   lse   oid   art   

原文地址:https://www.cnblogs.com/qulianqing/p/12622891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!