Если метод, который вы тестируете, не возвращает точную информацию о том, что вы сделали, я не вижу способа избежать вызова других методов.Я думаю, что вы правы в своем предположении, что интеграционное тестирование нуждается в ином способе мышления, чем модульное тестирование.
Я бы все-таки построил тесты, ориентированные на отдельные методы.Поэтому, тестируя Save (), я вполне могу использовать возможности Search (), но я сосредоточен на крайних случаях Save ().Я создаю тесты, которые имеют дело с дублирующими вставками или неверными входными данными.Затем позже я собрал целый ряд тестов Search (), которые имеют дело с крайними случаями Search ().
Теперь одним из возможных способов мышления является то, что Save и Search имеют некоторую общность, ошибка в Search может маскироватьсяошибка в Save.Представьте, например, если у вас там был слой кеширования.Поэтому, возможно, альтернативный подход заключается в использовании другого механизма проверки.Например, прямой вызов JDBC к базе данных или альтернативное введение насмешливых слоев в какой-то момент вашей инфраструктуры.При построении сложных интегрированных систем такая проверка «задней двери» может оказаться необходимой.