Spring Boot Repository.save()在测试类中不起作用

时间:2019-03-27 16:25:19

标签: spring-boot jpa spring-data-jpa

我有这个测试班:

@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 :(得分:0)

您正在使用哪个数据库?您是说测试完成后数据没有保留在数据库中吗?这是因为测试总是在完成工作后执行回滚/清除。