4
我运行一个JUnit集成测试与配置,像这样的内存数据库H2:JUnit的多线程测试与Spring的事务中
@Bean
public DataSource dataSource() {
try {
SimpleDriverDataSource simpleDriverDataSource = new SimpleDriverDataSource();
simpleDriverDataSource.setDriverClass((Class<? extends Driver>) ClassUtils.forName("org.h2.Driver", this.getClass().getClassLoader()));
simpleDriverDataSource.setUrl("jdbc:h2:file:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false;MVCC=true;FILE_LOCK=NO;mv_store=false");
simpleDriverDataSource.setUsername("sa");
simpleDriverDataSource.setPassword("");
return simpleDriverDataSource;
} catch(ClassNotFoundException e) {
throw new IllegalStateException(e.getMessage());
}
}
试验使得对服务方法的调用。此服务方法使用执行程序服务来分解处理。在调用服务类之前,测试方法会将一些数据插入到数据库中,并且可以使用服务(通过JPA存储库调用)读取此数据,直到将任务提交给执行程序服务。但是,运行任务时,无法读取之前保存的数据。
如何让分叉的线程看到持久数据?
注意:这只是单元测试失败,它在运行时工作正常。