Kotlin и JUnit 5 утверждают, что исключение выдается: отдельное объявление и выполнение с assertFailsWith - PullRequest
2 голосов
/ 27 апреля 2019

В Kotlin с JUnit5 мы можем использовать assertFailsWith

В Java с JUnit5 вы можете использовать assertThrows

В Java, если я хочу отделяет объявление исполняемого файла от самого выполнения , чтобы уточнить тесты в форме «Дано-потом-когда», мы можем использовать JUnit5 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);
}

В Kotlin мы можем использовать assertFailsWith:

@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) }
}

Но, как мы можем разделить объявление и выполнение в Kotlin с помощью assertFailsWith?

1 Ответ

4 голосов
/ 27 апреля 2019

Просто объявите переменную, как вы делали в 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)
}
...