#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. Не могли бы вы прояснить проблему? По-видимому, все нормально, как заявил Алонсо.