#java #spring #spock
#java #spring #spock
Вопрос:
Как я могу протестировать свое соединение с БД с помощью spock? Я знаю, как это сделать, используя JUnit
и тестовый проход, но когда я пытаюсь сделать то же самое, используя Spock
, я получаю NullPointerException
и не могу вызвать метод getDataSource()
для нулевого объекта.
@SpringBootTest
@ContextConfiguration(classes = DatabaseConfig.class)
@WebAppConfiguration
class DatabaseConfigTest extends Specification {
@Autowired
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean;
def "Should connect to database."() {
when:
entityManagerFactoryBean.getDataSource().getConnection()
then:
notThrown(SQLException.class)
}
}
Как протестировать соединение с БД с помощью Spock, мой класс, отвечающий за конфигурацию базы данных, DatabaseConfig.class
Комментарии:
1. Вы добавили
spock-spring
зависимость? Вам не нужны другие аннотации, кроме@SpringBootTest
.
Ответ №1:
Это должно дать вам то, что вы ищете. Удалите аннотации ContextConfiguration и WebAppConiguration. Ввод источника данных напрямую.
@SpringBootTest
class DatabaseConfigTest extends Specification {
@Autowired
DataSource dataSource;
def "Should connect to database."() {
when:
dataSource.getConnection()
then:
notThrown(SQLException.class)
}
}
Комментарии:
1. Я не хочу тестировать метод источника данных, я хочу протестировать LocalContainerEntityManager, который содержит всю информацию об источнике данных и jpaProperties.