Возможность 1:
Извлеките свой ResultSetExtractor в его собственный класс, что значительно упрощает его тестирование, чем в качестве анонимного внутреннего класса.
Возможность 2:
Выполните макет jdbcTemplate, создайте ArgumentCaptor, вызовите метод и затем выполните ...
Mockito.verify(this.jdbcTemplate).query(any(), any(), captor.capture());
Это позволяет вамчтобы затем получить ResultSetExtractor из ArgumentCaptor и запустить тесты для этого.Но это усложняет весь ваш тест, поэтому я по-прежнему предлагаю возможность 1.
Возможность 3:
Проверка всего этого на базе данных в памяти, тестирование ResultSetExtractorтолько косвенно.Поскольку это, кажется, Spring, есть простые способы сделать это, но, конечно, ваш модульный тест теперь будет включать в себя целый SpringApplicationContext, db и т. Д., Что делает его медленнее, чем «чистый» модульный тест только с ложными попытками.Так как это что-то, что запускает запросы к БД, вам в любом случае потребуется запустить его на БД, в противном случае ваши тесты на самом деле не будут завершены (имитация его с помощью mocks хороша для основ, но не то же самое).