У меня следующая структура проекта:
-module1
--src/main/java/at.flobau.demo.module1
---model
----Product.java
---service
----ProductService.java
---TestConfiguration.java
--src/test/java/at.flobau.demo.module1.service
---ProductServiceTest.java
-module2
--src/main/java/at.flobau.demo.main
---MainApplication.java
Класс Application выглядит следующим образом:
@SpringBootApplication(scanBasePackages = {"at.flobau.demo.main"})
@PropertySource(value = "classpath:application.properties")
@EnableJpaRepositories("at.flobau.demo.module1")
@EntityScan(basePackages = {"at.flobau.demo.module1"})
public class PocApplication {
public static void main(String[] args) {
SpringApplication.run(PocApplication.class, args);
}
}
Служба выглядит следующим образом:
@Service
public class ProductService implements IProductService {
@Autowired
private IProductRepository productRepository;
...
}
Тестовый класс выглядит например:
@SpringBootTest
@ContextConfiguration(classes = { TestConfiguration.class }, loader =
AnnotationConfigContextLoader.class)
@RunWith(SpringRunner.class)
public class ProductServiceTest {
@Autowired
private ProductService productService;
...
}
Файл конфигурации теста выглядит следующим образом:
@Configuration
@ComponentScan("at.flobau.demo")
public class TestConfiguration{ }
IntelliJ сообщает мне, что ProductService внутри теста не может быть подключен автоматически. Когда я запускаю тест, я получаю исключение:
Error creating bean with name 'ProductServiceTest': Unsatisfied dependency expressed through field
'productService'; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
'at.flobau.demo.module1.products.service.ProductService' available: expected at least 1 bean which
qualifies as autowire candidate. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}