我有这个测试班:
@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();
}
如果我在运行应用程序时调用此方法,它将正确地将所有对象添加到数据库中,但是当从测试中调用它时,它不会添加任何内容,但不会引发异常。
答案 0 :(得分:0)
您正在使用哪个数据库?您是说测试完成后数据没有保留在数据库中吗?这是因为测试总是在完成工作后执行回滚/清除。