Содержимое строки не определено - PullRequest
0 голосов
/ 24 мая 2018

У меня есть тестовый пример Junit (5), который ищет исключение, когда переменная выходит за границы, и я вызываю исключение IllegalArgumentException для него.

@Test
void testOutOfBoundsException() {
    Foo f = new Foo();

    IllegalArgumentException e = assertThrows(
            IllegalArgumentException.class, 
            () -> {
                f.checkVal(10);
                }
    );
    assertThat(e, hasMessageThat(containsString("You must enter a number between 0 and")));
}

Я получаю сообщение об ошибке

The method containsString(String) is undefined for the type FooTest

Я пробовал несколько различных операторов импорта для JUnit и hamcrest, но я просто не могу заставить это работать.

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Вы должны добавить статический импорт для containsString из класса org.hamcrest.CoreMatchers:

import static org.hamcrest.CoreMatchers.containsString;
0 голосов
/ 24 мая 2018

Спасибо тем, кто разместил ответы.

В итоге я обнаружил, что могу просто сделать это:

IllegalArgumentException e = assertThrows(
        IllegalArgumentException.class, 
        () -> {
            f.checkVal(10);
            },
            <exception message>); 

Так что мне не нужна вторая часть :)

0 голосов
/ 24 мая 2018

Вы можете просто использовать, как показано ниже:

  assertThatIllegalArgumentException().isThrownBy(() -> { 
  f.checkVal(10); 
  }) .withMessage("You must enter a number between 0 and");

вам может потребоваться assertj-core:

    <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.8.0</version>
        <scope>test</scope>
    </dependency>
...