Conversation
pomegranate282922
left a comment
There was a problem hiding this comment.
Работа очень хорошая! Изоляция, моки и стабы сделаны отлично.
Но с темой параметризации нужно ещё поработать. Нужно убрать ее оттуда, где она не нужна, и наоборот найти достойное ей применение.
| <maven.compiler.target>11</maven.compiler.target> | ||
| </properties> | ||
|
|
||
| <dependencies> |
There was a problem hiding this comment.
Файлы .idea коммитить не нужно . Нужно добавить их в gitignore. Нужно исправить
| hasMane = false; | ||
| } else { | ||
| throw new Exception("Используйте допустимые значения пола животного - самей или самка"); | ||
| throw new Exception("Используйте допустимые значения пола животного - самец или самка"); |
There was a problem hiding this comment.
Отлично! Изоляция выполнена верно.
| List<String> expectedFood = List.of("Животные", "Птицы", "Рыба"); | ||
| Mockito.when(feline.eatMeat()).thenReturn(expectedFood); | ||
| assertEquals("Кошка должна есть мясо", expectedFood, cat.getFood()); | ||
| Mockito.verify(feline, Mockito.times(1)).eatMeat(); |
There was a problem hiding this comment.
Отлично! Уместно применен verify.
src/test/java/FelineTest.java
Outdated
| Feline feline = new Feline(); | ||
| List<String> actualFood = feline.eatMeat(); | ||
| boolean actualResult = felineFood.equals(actualFood); | ||
| assertEquals("Кошачьи едят мясо", expectedResult, actualResult); |
There was a problem hiding this comment.
Это слишком многословно, хотя по сути достаточно assertEquals между животные птицы рыба и actualResult.
There was a problem hiding this comment.
В параметризации нет смысла, так как очевидно, что если результат равен животные птица рыба , то он не может быть равен ничему другому. То есть код просто три раза запускает один и тот же метод.
src/test/java/FelineTest.java
Outdated
| boolean actualResult = felineFood.equals(actualFood); | ||
| assertEquals("Кошачьи едят мясо", expectedResult, actualResult); | ||
| System.out.println("Результат выполнения теста:"); | ||
| System.out.println(actualResult == expectedResult); |
There was a problem hiding this comment.
Это нужно убрать. Если тест красный, ошибка от ассерта и так выведет информацию. Если зелёный - мы и так видим, что тест прошёл.
| assertEquals("Должно быть семейство кошачьих", expectedResult, actualResult); | ||
| System.out.println("Результат выполнения теста:"); | ||
| System.out.println(actualResult == expectedResult); | ||
| } |
There was a problem hiding this comment.
Аналогичное замечание. Нужно исправить
| assertEquals("У кошачьих 1 котенок", expectedResult, actualResult); | ||
| System.out.println("Результат выполнения теста:"); | ||
| System.out.println(actualResult == expectedResult); | ||
| } |
There was a problem hiding this comment.
Нужно ещё раз разобраться, для чего используется параметризация. Чтобы протестировать метод, передав в него различные параметры.
| Exception exception = Assert.assertThrows(Exception.class, () -> { | ||
| new Lion("Man", feline); | ||
| }); | ||
| Assert.assertEquals("Используйте допустимые значения пола животного - самец или самка", exception.getMessage()); |
There was a problem hiding this comment.
Отлично протестировано исключение!
…удалила xml-файлы из .idea из отслеживания
pomegranate282922
left a comment
There was a problem hiding this comment.
Да, теперь параметризация применена Верно.
Ещё можно использовать ее для теста метода doesHaveMane.
Осталось одно важное замечание, которое необходимо исправить.
src/test/java/LionTest.java
Outdated
| @Parameterized.Parameters(name = "{index}: {0}-{1}") | ||
| public static Iterable<Object[]> data() { | ||
| return Arrays.asList(new Object[][]{ | ||
| {1, 1}, |
There was a problem hiding this comment.
Так как значение одно и то же, можно использовать один параметр.
| }); | ||
| Assert.assertEquals("Используйте допустимые значения пола животного - самец или самка", exception.getMessage()); | ||
| } | ||
| } No newline at end of file |
There was a problem hiding this comment.
Каждый тест в этом классе повторится дважды, так как они находятся в параметризованном классе. Это нехорошо, нужно разнести по разным классам тесты, нуждающиеся в параметризации, и остальные.
…чень большая просьба, если нет критичных замечаний, принять работу:к сожалению, иначе мне недоступен следующий финальный проект, дедлайн по которому на этой неделе.
No description provided.