Я пытаюсь настроить некоторые тесты Spring Boot JPA, используя:
package biz.ianw.coindatabase.test;
@RunWith(SpringRunner.class)
@DataJpaTest
public class DbTests {
@Test
public void test1() { ... }
}
У меня есть класс обслуживания:
package biz.ianw.coindatabase.database;
//@Service
@Repository
@Transactional(readOnly=false)
public class CoinDbService { ... }
и заявка:
package biz.ianw.coindatabase;
@SpringBootApplication
@Slf4j
@Configuration
@EnableEncryptableProperties
public class Main {
@Autowired
CoinDbService dbService;
... }
Запуск теста выдает ошибку:
Для поля dbService в biz.ianw.coindatabase.Main требуется компонент типа 'biz.ianw.coindatabase.database.CoinDbService', который не может быть найден.
Это, как я предполагал, связано с типом bean-компонентов @DataJpaTest, загружаемых при запуске:
@ DataJpaTest можно использовать, если вы хотите протестировать JPA-приложения. От
по умолчанию он настроит встроенную базу данных в памяти, сканирование для
Классы @Entity и настройка репозиториев Spring Data JPA. регулярное
Бины @Component не будут загружены в ApplicationContext.
Я не совсем уверен, почему классы @Service следует рассматривать как необязательные для тестирования JPA, но я попытался форсировать этот вопрос, аннотируя его как @Repository, но безрезультатно.
Я могу вручную загрузить класс с помощью @Import (...), но это выглядит немного странно. Есть ли лучший способ сообщить DataJpaTest, что мне нужно для тестирования?