在我的Web应用程序中,如果部署了应用程序,则必须在DB中插入一些种子数据(如果不存在)。所以,我已经触发了如下插入数据api
@Component
public class ApplicationContextLoadListener implements ApplicationListener<ContextRefreshedEvent>{
@Autowired
private PersistenceFacilitator persistenceFacilitator;
@Autowired
private SeedDataService seedDataService;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
// generate metadata for entities and schema
persistenceFacilitator.facilitate();
//insert seed data
seedDataService.insertSeedData();
}
}
工作正常。但问题出现在我用@RunWith(SpringJUnit4ClassRunner.class)
执行测试用例时,该事件被触发并尝试插入种子数据,尽管DB尚未就绪。所以,我的所有测试用例都失败了。
有没有办法用spring或任何好的应用程序启动事件来处理这个问题来处理种子数据?
[更新] 根据应用引擎规范测试将数据插入数据库,我必须调用
@Before
public void setup(){
LocalServiceTestHelper helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig());
helper.setUp();
}
应用程序上下文加载时尚未准备就绪。无论如何,我不想在运行测试用例时在DB中插入种子数据