Как тестовый пример будет проверять исключение?

#java #testing

#java #тестирование

Вопрос:

Для моего кода у меня есть:

 public void addContact(Contact contact) {
  if (contact == null) {
    throw new IllegalArgumentException("contact must not be null");
  }
  this.contacts.add(contact);
}
  

И для моего тестового примера у меня есть:

 @Test

public void testForAddEmptyContact() {
  Contact nullContact = null;
  assertThrows(IllegalArgumentException.class, () -> {
    testContactList.addContact(nullContact);
  });
}
  

Когда я запускаю код в program, код после «assertThrows» становится красным.

Комментарии:

1. JUnit 5, верно?

2. Кроме того, для чего это стоит, я думаю NullPointerException , было бы более уместно в этом случае.

3. Я попробовал в IntelliJ с JUnit 5.4 и минимальным «шаблоном», и тест прошел так, как и должен. Затем я изменил исключение, сгенерированное, addContact() и тест не прошел, как и должно быть. В тесте assertThrows() это подчеркнуто красной пунктирной линией. Это просто способ IntelliJ сообщить мне, где тест не удался.

4. Не могли бы вы прояснить проблему? По-видимому, все нормально, как заявил Алонсо.