Нет подходящего компонента для автоматического подключения JPA-репозитория в тесте JUnit в приложении Spring Boot - PullRequest
0 голосов
/ 03 июля 2019

У меня есть несколько репозиториев, расширяющих JpaRepository.Теперь я хочу протестировать пользовательские запросы, которые я добавил в модульном тесте, с использованием реального экземпляра базы данных H2 (не в памяти - чтобы я мог просматривать базу данных с помощью веб-консоли).

Однако, авто- подключение хранилища к устройству не работает, я всегда получаю NoSuchBeanDefinitionException: No qualifying bean of type ... UserRepository available.

код хранилища и модульный тест, приведенный ниже.Спасибо за любую помощь!

UserRepository

public interface UserRepository extends JpaRepository<User, Long> {}


UserRepositoryTests

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@ContextConfiguration(classes = TestConfiguration.class)
@Transactional
public class UserRepositoryTests {

    @Autowired
    private UserRepository userRepository;

    @Test
    @Commit
    public void test() throws AESEncryptionException {
        User user = new User().setFirstName("ABC").setLastName("XYZ");
        user = userRepository.save(user);
        assertNotNull(user.getId());
    }

}


TestConfiguration

@Configuration
@EnableAutoConfiguration
@ComponentScan
@PropertySource("classpath:/application.properties")
public class TestConfiguration {}


application.properties

spring.datasource.url = jdbc:h2:file:./db/app-data
spring.datasource.driverClassName = org.h2.Driver
spring.jpa.database-platform = org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto = update
spring.h2.console.settings.web-allow-others = true

EDIT : Согласно предложению Mensur Qulami, удаление @ContextConfiguration(classes = TestConfiguration.class) добилось цели, так как это уже покрыто @SpringBootTest.

1 Ответ

1 голос
/ 03 июля 2019

Вы можете использовать DataJpaTest в сочетании с @ AutoConfigureTestDatabase (replace = Replace.NONE) для использования вашей «реальной» базы данных

@RunWith(SpringRunner.class)
@DataJpaTest (showSql = true )
@AutoConfigureTestDatabase(replace=Replace.NONE)
public class UserRepositoryTests {

    @Autowired
    private UserRepository userRepository;

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