当前位置: 首页 > 知识库问答 >
问题:

如何用一个JUnit方法检查多个异常?

邵锐
2023-03-14
 void deleteCustomer(String name) throws UnknownCustomerException,
        AccountNotEmptyException {
    if (name == null) {
        throw new NullPointerException();
    } else if (!exists(name)) {
        throw new UnknownCustomerException();
    } else if (getCustomer(name).deletable()) {
        customerList.remove(getCustomer(name));
    }
}
   @Test
public void createCustomer(){
    System.out.println("createCustomerTest");
    try {
        element.createCustomer(null);
        //fail("Expected an IndexOutOfBoundsException to be thrown");
    } catch (NullPointerException anIndexOutOfBoundsException) {
        assertTrue(anIndexOutOfBoundsException.getMessage().equals("NullPointerException"));
    }
}

正如您所看到的,我已经尝试实现NPE但没有成功。如何在一个JUnit方法中检查多个异常?我在网上检查了一些操作方法,但也失败了。

共有1个答案

舒斯伯
2023-03-14

我认为在您的情况下,您应该有单独的测试,但是如果使用Java8,您可以像这样实现这一点:

使用可与JUnit一起使用的AssertJ3断言:

import static org.assertj.core.api.Assertions.*;

@Test
public void test() {
  Element element = new Element();

  assertThatThrownBy(() -> element.createCustomer(null))
        .isInstanceOf(NullPointerException.class)
        .hasMessageContaining("NullPointerException");

  assertThatThrownBy(() -> element.get(1))
        .isInstanceOf(IndexOutOfBoundsException.class);
}

它比@test(expected=indexoutofboundsexception.class).expect语法更好,因为它保证测试中预期的行抛出异常,并允许您检查有关异常的更多细节,如消息。

 类似资料:
  • 问题内容: 我想使用Spring Security JSP标签库根据角色有条件地显示一些内容。但是在Spring Security 3.1.x中,仅检查一个角色。 我可以使用,但 ifAllGranted 已弃用。 有什么帮助吗? 问题答案: 春季安全性中有一个特殊的安全性表达: hasAnyRole(角色列表) -如果已授予用户指定的任何角色(以逗号分隔的字符串 列表形式) ,则为true。 我

  • 我想做一个应用程序,以一种简单的方式在电影院分配座位。 我有一个LinkedList,其中随机填写了0“座位可用”或1“座位已被占用”。此LinkedList由变量int“seatsTotal”生成,然后用数学填充LinkedList。具有1或0的随机函数。 这个想法是用户给出一个变量,即他们想预订多少座位,之后,一个(也许是递归的)方法将查找(例如)标有0(可用)的5个座位。 如果后面(旁边)没

  • 但这将返回以下错误: org.mockito.exceptions.misusing.NotaMockException: 传递给verify()的参数类型为$proxy4,不是mock!

  • 如何从一个方法中同时抛出多个异常?示例: 编辑:一个条件同时抛出Exception1和Exception2。可能?这只是一个测试抛出异常的演示文件。

  • 我正在测试一个带有预期异常的方法。我还需要验证在抛出异常后是否调用了一些代码(在模拟对象上),但忽略了验证。这是代码: 这是测试代码:

  • 在这里,我只想确保抛出异常测试,但希望跳过调用方法在其中。我试着跟着走,但没有奏效