Нет тестового компонента репозитория типов при запуске теста, но не основного приложения - PullRequest
0 голосов
/ 22 марта 2019

Я разрабатываю приложение Spring Boot, следуя методологии TDD. Я создал основные классы (контроллер, сервис и репозиторий) следующим образом:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class CrimeServiceImpl implements CrimeService{

    @Autowired
    private CrimeRepository repository;
    ...

Контроллер:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CrimeController {

    @Autowired
    private CrimeServiceImpl service = new CrimeServiceImpl();

Repository:

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CrimeRepository extends JpaRepository<Crime, Long>{

}

Это структура проекта:

enter image description here

Если я запускаю приложение нормально, ошибок нет. Методы классов пусты. Затем я создал тестовый класс, подобный этому:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = CrimeServiceImpl.class)
@ComponentScan("com.springmiddleware")
@AutoConfigureMockMvc
@SpringBootTest
public class TestCrimeService {

    //Calling method getAllCrimes works
    @Test
public void returnAllCrimesExists() throws NoSuchMethodException, SecurityException {
    List<Crime> list = new ArrayList<>();
    assertTrue(this.service.getAllCrimes() == list);

}

И если я запускаю это, отображается следующая ошибка, и тест не проходит:

NoSuchBeanDefinitionException: No qualifying bean of type 'com.springmiddleware.repository.CrimeRepository' available: expected at least 1 bean which qualifies as autowire candidate.

Я проверил все аннотации, и мне кажется, что все в порядке, и я подумал, что если я что-то пропустил, даже при нормальном запуске приложение не будет работать. Что я не так понял?

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