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

Kotlin和JUnit5断言抛出异常:使用assertFailsWith分别声明和执行

俞衡虑
2023-03-14

在使用JUnit5的Kotlin中,我们可以使用assertFailsWith

在JUnit5的Java中,可以使用assertThrows

@Test
@DisplayName("display() with wrong argument command should fail" )
void displayWithWrongArgument() {

    // Given a wrong argument
    String arg = "FAKE_ID"

    // When we call display() with the wrong argument
    Executable exec = () -> sut.display(arg);

    // Then it should throw an IllegalArgumentException
    assertThrows(IllegalArgumentException.class, exec);
}
@Test
fun `display() with wrong argument command should fail`() {

    // Given a wrong argument
    val arg = "FAKE_ID"

    // When we call display() with the wrong argument
    // ***executable declaration should go here ***

    // Then it should throw an IllegalArgumentException
    assertFailsWith<CrudException> { sut.display(arg) }
}

但是,我们如何用assertfailswith将声明和Kotlin中的执行分开呢?

共有1个答案

太叔英锐
2023-03-14

只需像在Java中那样声明一个变量:

@Test
fun `display() with wrong argument command should fail`() {

    // Given a wrong argument
    val arg = "FAKE_ID"

    // When we call display() with the wrong argument
    val block: () -> Unit = { sut.display(arg) }

    // Then it should throw an IllegalArgumentException
    assertFailsWith<CrudException>(block = block)
}
 类似资料:
  • 主要内容:throws 声明异常,throw 拋出异常Java 中的异常处理除了捕获异常和处理异常之外,还包括声明异常和拋出异常。实现声明和抛出异常的关键字非常相似,它们是 throws 和 throw。 可以通过 throws 关键字在方法上声明该方法要拋出的异常,然后 在方法内部通过 throw 拋出异常对象。本节详细介绍在 Java 中如何声明异常和拋出异常。 throws 声明异常 当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部

  • 版本: 我得到以下错误:

  • 问题内容: 我在junit测试中使用了模仿。如何使异常发生,然后断言其具有(通用伪代码) 问题答案: __仅 Mockito 并不是处理异常的最佳解决方案, 请将Mockito 与 Catch-Exception结合使用 Mockito + 捕获异常 + AssertJ 样例代码 Mockito + Catch-Exception + Assertj完整样本 依存关系 eu.codearte.ca

  • 上一节展示了如何为ListOfNumbers类中的writeList方法编写异常处理程序。 有时,它适合代码捕获可能发生在其中的异常。 但在其他情况下,最好让一个方法进一步推给上层来调用堆栈处理异常。 例如,如果您将ListOfNumbers类提供为类包的一部分,则可能无法预期包的所有用户的需求。 在这种情况下,最好不要捕获异常,并允许一个方法进一步推给上层来调用堆栈来处理它。 如果writeLi

  • 在JUnit5中有更好的方法来断言方法抛出异常吗? 目前,我必须使用@规则来验证我的测试是否抛出了异常,但这对于我期望多个方法在我的测试中抛出异常的情况不起作用。

  • 根据我读到的其他问题(为什么重写方法不能抛出比重写方法更广的异常?以及Java方法抛出异常) 我知道子类中的重写方法必须抛出在重写方法中抛出的异常的相同或一个子类。 Java方法总是至少抛出一个类型为exception的异常吗? ...换句话说,编译器添加抛出异常 因此类X将如下所示 我想澄清的是,对于始终添加默认异常处理程序异常这一事实,我没有搞错。 相关问题: IOException与Runt