Lesson 125-127 (JUnit/Mockito)#1
Lesson 125-127 (JUnit/Mockito)#1Binary-Cat-01 wants to merge 16 commits intoKFalcon2022:mockito-for-prfrom
Conversation
settings.gradle
Outdated
| @@ -1,2 +1,3 @@ | |||
| rootProject.name = 'unit-testing-practical-task' | |||
|
|
|||
|
|
|||
|
|
||
| FullName fullName = (FullName) o; | ||
| return Objects.equals(name, fullName.name) && Objects.equals(surname, fullName.surname) && Objects.equals( | ||
| patronymic, fullName.patronymic); |
There was a problem hiding this comment.
Лучше сразу часть выражения перенести на следующую строку:
&& Objects.equals(patronymic, fullName.patronymic)Всегда усложняет восприятие, если переносишь что-то вложенное, как здесь
| fullNameValidationService.validatePatronymic(patronymic); | ||
|
|
||
| return new FullName(name, surname, patronymic); | ||
| } catch (RegexValidationException e) { |
There was a problem hiding this comment.
В чем смысл try-catch? Ты ведь буквально подменяешь один RuntimeException другим
В целом, явное отлавливание RuntimeException в catch будет некорректным подходом в абсолютном большинстве случаев. Есть ситуации, когда это оправдано, но когда ты с ними столкнешься - скорее всего уже придет понимание, зачем это делать
| public static final String NAME_REGEX = "[А-Я][а-я]*"; | ||
| public static final String PATRONYMIC_REGEX = "[А-Я][а-я]+"; | ||
|
|
||
| public FullNameValidationService() { |
There was a problem hiding this comment.
конструктор по умолчанию будет создан и без твоего участия
| public static final String FULL_NAME_REGEX = "^[А-Я][А-Яа-я-]* [А-Я][а-я]* [А-Я][а-я]+$"; | ||
| public static final String DOUBLE_SURNAME_REGEX = "[А-Я][а-я]*-[А-Я][а-я]*"; | ||
| public static final String NAME_REGEX = "[А-Я][а-я]*"; | ||
| public static final String PATRONYMIC_REGEX = "[А-Я][а-я]+"; |
There was a problem hiding this comment.
Если константа применяется только внутри класса - почему public?
| import static org.junit.jupiter.api.Assertions.*; | ||
|
|
||
| class FullNameValidationServiceTest { | ||
| private FullNameValidationService fullNameValidationService; |
There was a problem hiding this comment.
почему поле расположено выше констант?
| } | ||
|
|
||
| @ParameterizedTest | ||
| @EmptySource |
There was a problem hiding this comment.
И выше где-то аналогичная аннотация
| @ParameterizedTest | ||
| @EmptySource | ||
| @FieldSource("INVALID_DOUBLE_SURNAMES") | ||
| void validateSurname_invalidSurNames_ThrowsException(String invalidSurName) { |
There was a problem hiding this comment.
validateSurname_invalidSurNames - кажется, в большинстве методов вторую часть можно сделать лаконичнее. Ну и surname - это одно слово)
| // then | ||
| assertDoesNotThrow(actual); | ||
| } | ||
| } No newline at end of file |
There was a problem hiding this comment.
не увидел теста под ситуации, когда в метод(-ы) передается null
|
|
||
| @ParameterizedTest | ||
| @FieldSource("VALID_PATRONYMICS") | ||
| void validatePatronymic_validPatronymics_DoesNotThrowException(String validPatronymic) { |
There was a problem hiding this comment.
DoesNotThrowException - как будто переусложнено. Отсутствие исключение - целевое поведение для абсолютного большинства методов (по сути, всех, которые не бросают UnsupportedOperation). Зачем это дополнительно подчеркивать?
No description provided.