Я пишу тесты для Service
, которые используют несколько хранилищ данных Jpa.Проблема заключается в том, что некоторые репозитории используют множество собственных запросов со MySQL
специальными функциями, такими как str_to_date()
.Поэтому, когда я попытался протестировать метод сервиса, используя H2
, я получил сообщение о том, что H2 не распознает функцию.Я пытался использовать H2 в режиме MySQL, но получил ту же ошибку.
здесь mariaDB4j был предложен в качестве обходного пути.Я добавил зависимость в Maven
<dependency>
<groupId>ch.vorburger.mariaDB4j</groupId>
<artifactId>mariaDB4j</artifactId>
<version>2.3.0</version>
<scope>test</scope>
</dependency>
Но получаю IllegalStateException : Failed to replace DataSource with an embedded database for tests. If you want an embedded database please put a supported one on the classpath or tune the replace attribute of @AutoConfigureTestDatabase
.
Мой тестовый файл выглядит следующим образом:
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.ANY)
public class TestPay {
@TestConfiguration
static class PaymentServiceTestContextConfiguration {
@Bean
public PaymentService paymentService(){
return new PaymentService();
}
}
@Autowired
private PaymentService paymentService;
@Autowired
private TarifRepository firstRepository;
@Autowired
private BuildingRepository secondRepository;
@Autowired
private ApartmentRepository thirdRepository;
/* Test cases here*/
}
Проект построен с использованием аннотацийВесенний ботинок.