SpringBootTest: невозможно найти таблицу в базе данных h2 - PullRequest
0 голосов
/ 19 июня 2020

Я тестирую репозиторий JPA с базой данных h2.

Я разместил следующие аннотации в своем классе модульного теста:

@ExtendWith(SpringExtension.class)
@SpringBootTest

В тесте я просто вызываю метод сохранения по умолчанию для Репозиторий JPA.

Сущность определяется с аннотациями как:

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Table(name = "coverage")

И в src / test / resources я определил application.properties с деталями:

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;
spring.datasource.username=sa
spring.datasource.password=sa
spring.datasource.platform=h2
spring.jpa.properties.hibernate.dialect= org.hibernate.spatial.dialect.h2geodb.GeoDBDialect
spring.h2.console.enabled=true

Я ожидаю, что SpringBootTest прочитает мой класс сущности и создаст таблицу в базе данных h2. Но я получаю сообщение об ошибке:

Caused by: org.postgresql.util.PSQLException: ERROR: relation "coverage" does not exist

Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Думаю, когда вы проводите интеграционный тест, вам нужно загрузить конфигурации базы данных в контексте. надеюсь, что эти аннотации подойдут для вашего случая

@DataJpaTest // required
@ActiveProfiles("test") //optional: setting the profile you want to test
@ContextConfiguration(classes = {DatabaseConfig.class}) // load the configurations

Ссылка:

0 голосов
/ 19 июня 2020

Все, что вам нужно, это включить зависимость базы данных H2 в область test.

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>test</scope>
</dependency>

Пока вы используете Spring Boot, фреймворк автоматически обнаруживает эту зависимость в области test на путь к классам и запускает базу данных для фазы тестирования с настройками по умолчанию (совпадающими с теми, которые вы указали) и не требует дополнительной настройки.

Я полагаю, вы используете jUnit 5, поэтому используйте эти аннотации для тестового класса:

@SpringBootTest
@ExtendWith(MockitoExtension.class)
public class MyTest() {

}
...