Spring Boot 2.2.2: как я могу помешать репозиториям JPA мешать встроенным тестам MongoDB? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть приложение Spring Boot с репозиториями JPA и Mon go, и, хотя все написанные тесты репозитория JPA, которые я написал, работают нормально, тесты MongoDB проваливаются из-за проблем с созданием bean-компонентов в репозиториях JPA.

Вот пример теста MongoDB, взятый почти прямо из Baeldung:

@ExtendWith(SpringExtension.class)
@DataMongoTest
public class BadgeRepositoryTest {

    private final MongoTemplate mongoTemplate;

    @Autowired
    public BadgeRepositoryTest(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

    @Test
    public void test() {
        System.out.println("Hello!");
    }

}

И вот усеченная ошибка:

Failed to resolve parameter [org.springframework.data.mongodb.core.MongoTemplate mongoTemplate] in constructor [public com.foo.repositories.mongo.BadgeRepositoryTest(org.springframework.data.mongodb.core.MongoTemplate)]: Failed to load ApplicationContext
org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter [org.springframework.data.mongodb.core.MongoTemplate mongoTemplate] in constructor [public com.foo.repositories.mongo.BadgeRepositoryTest(org.springframework.data.mongodb.core.MongoTemplate)]: Failed to load ApplicationContext
    at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameter(ExecutableInvoker.java:239)
    at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:183)
    at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:74)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestClassConstructor(ClassBasedTestDescriptor.java:329)

    ...

Caused by: java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132)
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123)
    at org.springframework.test.context.junit.jupiter.SpringExtension.getApplicationContext(SpringExtension.java:202)
    at org.springframework.test.context.junit.jupiter.SpringExtension.resolveParameter(SpringExtension.java:188)
    at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameter(ExecutableInvoker.java:216)
    ... 75 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pollQuestionAnswerUserRepository': Cannot create inner bean '(inner bean)#7d9a0c94' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#7d9a0c94': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available

Я уверен, что это дело необходимости отключать репозитории JPA во время тестов Mon go, но я не могу найти правильную комбинацию аннотаций или параметров конфигурации для этого. Или, может быть, я далеко от базы. В любом случае, кто-нибудь может указать мне правильное направление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...