Spring boot repository.save () не работает в тестовом классе - PullRequest
0 голосов
/ 27 марта 2019

У меня есть этот тестовый класс:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { CrimeServiceDBImpl.class, CrimeController.class, Crime.class })
@ComponentScan("com.springmiddleware")
@EntityScan(basePackages = {"com.springmiddleware.entities"})
@DataJpaTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
@EnableJpaRepositories("com.springmiddleware")
public class TestCrimeServiceDB {


    @Autowired
    private CrimeServiceDBImpl service = new CrimeServiceDBImpl();

    @Test
    public void getAll() {
        try {
            List<Crime> list = this.service.getAllCrimes();
            assertTrue(list.size()!=0);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Метод getAllCrimes() из класса обслуживания делает именно это:

@Service
public class CrimeServiceDBImpl implements CrimeService{

    @Autowired
    private CrimeRepository repository;

    private List<Crime> list = new ArrayList<Crime>();



    public CrimeServiceDBImpl() {
        list = UtilityMethods.readFromCSV();
    };


    @Override
    public List<Crime> getAllCrimes() throws IOException {
        repository.saveAll(list);
        return this.repository.findAll();
    }

Если я вызываю этот метод при запуске приложения, оно корректно добавляет все мои объекты в базу данных, но при вызове из теста ничего не добавляется, но исключение не выдается.

1 Ответ

0 голосов
/ 29 марта 2019

Какую базу данных вы используете?Вы имеете в виду, что данные не сохраняются в базе данных после завершения теста?Это связано с тем, что тест всегда выполняет откат / очистку после завершения своей работы.

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