Я делаю тестовую конфигурацию. Я удивлен, что все нормально в первом сценарии, но не во втором.
В scr / main / java я получил этот контроллер
@RestController
@RequestMapping("/v1")
public class PostgressControllerSpringData {
@Resource
PersonneRepository personneRepository;
@GetMapping("/persist")
public ResponseEntity<String> persistOne() {
Personne p = new Personne();
personneRepository.save(p);
return new ResponseEntity<String>("persistence ok", HttpStatus.ACCEPTED);
}
В scr / main / test я получил этокласс конфигурации
@TestConfiguration
public class ServiceConfiguration {
@Bean
public PostgressControllerSpringData getBean() {
return new PostgressControllerSpringData();
}
Теперь в тестовом классе, когда я делаю
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
public class SCRIntegrationTest {
@Autowired
private PostgressControllerSpringData myController;
@Autowired
PersonneRepository dao;
@Test
public void m() {
myController.persistOne();
assertEquals(1, dao.findAll().size());
// here, my test is successful
==> Все в порядке.
Но если я это сделаю.
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
public class SCRIntegrationTest {
@Autowired
private PostgressControllerSpringData myController;
@Autowired
PersonneRepository dao;
@Test
public void m() {
WebTestClient testClient = WebTestClient.bindToController(myController).build();
==> Код останавливается с сообщением
Ошибка внедрения зависимостей ресурса;Нет доступного квалифицирующего компонента типа PersonneRepository:
Я удивлен, потому что в моем первом сценарии поле PersonneRepository
экземпляра PostgressControllerSpringData
хорошо введено. Но во-вторых, весна говорит мне, что инъекция не удалась!