// Пишет вот такой код
class A implements Serializable { }
class B extends A {}
// А читает вот такой
class A implements Serializable { }
class AHalf extends A {
private void readObjectNoData() throws ObjectStreamException {}
}
class B extends AHalf {}
public int hashCode() {
int hashCode = 1;
for (E e : this)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
return hashCode;
}
class BuildCircle extends BuildShape
.String str1 = "Hello";
String str2 = "Hello";
// Какую концепцию проверяем?
// Это не просто проверка функции ListAll, это проверка какой-то концепции кода
// Варианты.
// 1. Пустой listAll() даёт пустой список.
// 2. Непустой listAll() даёт непустой список.
void testListAll() {
ArrayList<Product> productList = new ArrayList<Product>();
// Проводим поиск в списке — что в этот список вносится?
// И не будет ли физической зависимости тестов друг от друга?
// И для чего вообще нужен этот search, если мы listAll тестируем?
// Что такое ProductRepository и он вообще проверен?
when(this.productRepository.search((String) any())).thenReturn(productList);
// Ну, хорошо.
List<Product> actualListAllResult = this.productService.listAll("Keyword");
// Отказ, они не same: первый мы только что создали, а второй откуда-то пришёл.
assertSame(productList, actualListAllResult);
// Получается, что концепция — поиск, когда ничего не находится?
assertTrue(actualListAllResult.isEmpty());
verify(this.productRepository).search((String) any());
// Получается, единственная концепция, которую мы тестируем,— поиск в пустом списке даёт пустоту
// (и та некорректная из-за assertSame).
assertTrue(this.productService.getAll().isEmpty());
}