2017-02-06 4 views
2

Я хочу настроить приложение загрузки Spring, чтобы ни одна БД не использовалась вообще. Так я аннотированный мой класс приложений для исключения JPA автонастройки классов:Единичный тест SpringBoot не использует аннотацию @EnableAutoConfiguration от класса приложения

@SpringBootApplication 
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) 
public class Application { 

    public static void main(final String... args) { 
     run(Application.class, args); 
    } 
} 

Это прекрасно работает, когда служба запускается автономной

К сожалению, мой тест Classe кажется игнорировать аннотацию, хотя я использую класс Application для моего теста

@Slf4j 
@RunWith(SpringRunner.class) 
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
public class SwaggerJsonExistenceTest { 
    ... 
} 

тест выдает следующее сообщение об ошибке

Вызвать: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем 'dataSource': вызов метода init не удалось; Вложенное исключение - java.lang.IllegalStateException: не может определить встроенную базу данных для тестов. Если вы хотите встроенную базу данных , пожалуйста, поместите ее в путь к классам.

Обновление: Нет драйверов DB на пути к классам.

org.springframework.boot: весна-загрузки-стартер-данных JPA используется для тестирования (в комплекте с помощью директивы testCompile в Gradle)

Как тест должен быть настроен таким образом, что он не использует db- связанная автоконфигурация?

Исправление: я удалил все jpg стартовые зависимости (так как никакой DB не требуется), так что autoconfig источника данных вообще не выполняется.

+0

У вас есть драйвер базы данных на пути к классу? Какие пружинные загрузчики вы используете? если вы это сделаете, удалите его. Он остановит любую магию db-autoconfiguration. –

+0

@BartoszBilicki Я удалил все jpg стартовые зависимости. он работает сейчас, thx. хотя я до сих пор не знаю, почему исключение классов не работает для теста ... – Gernot

ответ

0

У анкеты @SpringBootApplication есть свойство exclude, которое вы должны использовать в пользу @EnableAutoConfiguration(exclude = ...). Если вы используете его, аннотированные тесты @SpringBootTest должны правильно исправить исключение.

Spring Boot API - SpringBootApplication

+0

Я удалил аннотацию EnableAutoConfiguration и теперь использую свойство exclude @SpringBootApplication. К сожалению, тест по-прежнему не работает с тем же сообщением об ошибке – Gernot

+0

Это странно. Попробуйте исключить JpaRepositoriesAutoConfiguration.class. –

+1

Если вам не нужна база данных, вам не нужны данные Spring, которые вы включили через spring-boot-starter-data-jpa –

Смежные вопросы