spring-boot - Spring boot repository.save() 在测试类中不起作用
问题描述
我有这个测试课:
@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();
}
如果我在运行应用程序时调用此方法,它会正确地将我的所有对象添加到数据库中,但是当从测试中调用它时,它不会添加任何内容,但不会引发异常。
解决方案
您使用的是哪个数据库?您的意思是测试完成后数据没有保存在数据库中吗?这是因为测试总是在完成工作后执行回滚/清理。
推荐阅读
- xaml - 如何禁用 UWP 应用的缩放
- java - 如何返回两个对象的差异
- sql - 有没有办法可以将Oracle中每个表的序列的last_number字段设置为该表主键的最大值?
- django - 如何提取 django 表单字段?
- kubernetes - 我们可以从两个现有的 Yamls 中创建一个 POD,每个 Yamls 都有自己的容器吗?
- rust - 用 Rust 处理 WebAssembly 中的闭包而不是使用忘记和泄漏内存有什么更好的方法?
- docker - 消除码头工人
使用 docker-compose 构建时的图像 - python - 用样式表改变paintEvent颜色?
- c# - 如何将动态网格字符串值更改为超链接模式
- docker - 通过 Docker 和 NGINX 提供简单的静态网站