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存儲庫調用)讀取此數據,直到將任務提交給執行程序服務。但是,運行任務時,無法讀取之前保存的數據。
如何讓分叉的線程看到持久數據?
注意:這只是單元測試失敗,它在運行時工作正常。