【问题标题】:How to write Junit test to test if the method has thrown an exception correctly? [duplicate]如何编写Junit测试来测试方法是否正确抛出异常? [复制]
【发布时间】:2021-10-28 15:12:15
【问题描述】:

如何测试下面的方法在name为null时是否抛出异常?

public boolean validateName(String name) {
    if (name == null) {
        throw new IllegalArgumentException("Name cannot be null");
    }
    if (name.isBlank()) { // checks if name is entirely whitespace
        return false;
    }
    if (!name.contains(" ")) {
        return false;
    }
    return true;
}

我已经测试了空白名称和包含空格的名称的所有情况,唯一剩下的就是名称为空时的测试,这是我得到的:

@Test
public void handlesNullTest() {
    String name = null;
    NameValidator validator;
    assertEquals("Name cannot be null", validator.validateName(name));
    
}

以上是在 java Junit 测试中测试抛出异常的正确方法吗?谢谢。

【问题讨论】:

  • "以上是在 java Junit 测试中测试抛出异常的正确方法吗?" - 否。

标签: java unit-testing junit


【解决方案1】:

在 Junit 4 中,您可以将属性用作 @Test 注释的属性来“预期”某个异常,如下所示:

@Test(expected = IllegalArgumentException.class)
public void whenExceptionThrown_thenExpectationSatisfied() {
  String name = null;
  NameValidator validator;
  validator.validateName(name);
}

【讨论】:

  • JUnit4 已经过时了。我们应该改用junit jupiter。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-11
  • 2016-06-16
  • 2021-02-08
  • 2018-12-10
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
相关资源
最近更新 更多