Чтобы протестировать свой класс Player
без базы данных, вы можете использовать фреймворк, такой как EasyMock или Mockito , чтобы создать макет вашего World
объекта, предварительно записавметоды, которые вы ожидаете, что ваш класс Player
вызовет, а затем подтвердите, что метод действительно был вызван.
Вы также можете позволить своим фиктивным объектам перехватить вызов метода и заменить его пользовательской логикой. Например, вы можете делегировать вызов breakBlockAt
методу, который изменяет HashMap
вместо фактической базы данных. И возвращаемое значение может затем вести себя по-разному в зависимости от того, что предыдущие вызовы уже сделали с HashMap
.
Конечно, у вас все равно должен быть отдельный тестовый пример для вашего класса World
, чтобы фактически протестироватьлогика, которая работает с базой данных (но без добавления сложности класса Player
сверху). Это в основном интеграционный тест, в котором вы убедитесь, что операторы JDBC или объекты JPA приводят к правильному SQL, который работает при использовании с выбранным вами диалектом базы данных. Библиотека типа Testcontainers может использоваться для настройки пустой базы данных в контейнере Docker изнутри вашего модульного теста. Единственное требование заключается в том, что в вашей тестовой среде Docker запущен и готов к выполнению.