JUnit 异常测试

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");
    }

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

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

时间: 2024-10-10 17:38:44

JUnit 异常测试的相关文章

Junit中的异常测试

前言 在写单元测试的时候,经常会遇到需要断言方法需要抛出一个异常这种场景,这时,就会用到Junit的异常测试功能 方式 1.使用@Test注解自带的 expected 属性来断言需要抛出一个异常,如下: @Test(expected = IllegalStateException.class) public void testExpect() { throw new IllegalStateException(); } 在运行测试的时候,此方法必须抛出异常,这个测试才算通过,反之则反. 2.使用

junit单体测试(PowerMockito)二

距离上次做junit单体测试几个月,果然又用到了,又学习了一些新的东西,总结一下. 首先是对spy的理解,以前一直用mock,没有用过spy,所以对spy并不了解,最近用过几次后,也在google上学习了一下,网上说的都比较书面,mock:全部mock:spy:部分mock:但是到底什么叫全部,什么叫部分却始终没有能弄明白,自己实际使用后感觉,全部mock应该是对整个方法进行mock,不实际走方法,直接返回mock的返回值:而spy的部分mock应该是虽然mock了这个方法,并且返回了我们设置的

JAVAEE——spring02:使用注解配置spring、sts插件、junit整合测试和aop演示

一.使用注解配置spring 1.步骤 1.1 导包4+2+spring-aop 1.2 为主配置文件引入新的命名空间(约束) 1.3 开启使用注解代替配置文件 1.4 在类中使用注解完成配置 2.将对象注册到容器 //<bean name="user" class="cn.itcast.bean.User" /> //@Component("user") // @Service("user") // servic

Junit指定测试执行顺序

原文链接: Test execution order原文日期: 2012年12月06日翻译日期: 2014年7月2日翻译人员: 铁锚 说明: Junit4.11版本及以后才支持,建议升级到最新版本. 按照设计原则,JUnit是不指定测试方法调用执行顺序的.目前为止,这些方法只是简单地按照反射(reflection) API返回的顺序执行.但是,使用JVM默认提供的排序是很不明智的,因为Java平台没有指定任何有规律的顺序,而事实上JDK 7可能会返回一个随机的顺序.当然,精心编写的测试代码之间并

关于JUnit的测试

把以前的笔记整理一下,做个备份方便以后查阅: 要测试的代码如下: package dao.jdbc; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet; import util.DBUtil; import dao.IAccountDAO;import entity.Account; public class AccountDAOImpl implements IAccou

eclipes使用junit进行测试

任务一,Install Junit(4.12), Hamcrest(1.3) with Eclipse 首先在网上下载Junit和Hamcrest的jar文件,Right click on the project root directory - > build path - > configure build path - > library the junit. Jar, hamcrest. Jar added 任务二,Install Eclemma with Eclipse 在my

运用JUnit进行测试

1.JUint简介 JUnit是一个Java语言的单元测试框架.JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试. 它包括以下特性: 1.用于测试期望结果的断言(Assertion) 2.用于共享共同测试数据的测试工具 3.用于方便的组织和运行测试的测试套件 4.图形和文本的测试运行器 2.一个简单的JAVA程序,并用JUnit进行测试 第一步,运用eclipse编写程序,显示“Hello YangYang” 运行效果 第二步,将JUnit4单元测试包引入这个项目 (1)

Spring测试框架JUnit搭建测试环境 不通过web服务器 初始化spring bean对象

直接使用 JUnit 测试 Spring 程序存在的不足 需要使用硬编码方式手工获取 Bean:在测试用例中,我们需要通过 ApplicationContext.getBean() 的方法从 Spirng 容器中获取需要测试的目标 Bean,并且还要进行造型操作. 数据库现场容易遭受破坏:测 试方法可能会对数据库记录进行更改操作,破坏数据库现场.虽然是针对开发数据库进行测试工作的,但如果数据操作的影响是持久的,将会形成积累效应并影响到 测试用例的再次执行.举个例子,假设在某个测试方法中往数据库插

3、Socket-连接异常测试

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.BindException; import java.net.ConnectException; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; im