我从Robolectric 3.0-rc2迁移到Robolectric 4.3。
迁移后,我的测试开始失败,并显示以下错误: java.lang.IllegalStateException:非法的连接指针1。
在失败的测试中,我没有测试SQLite数据库,实际上,我为实际使用该数据库的类创建了一个实例。
我在下面的链接https://www.bountysource.com/issues/32208329-java-lang-runtimeexception-java-lang-illegalstateexception-illegal-connection-pointer-1-with-content-provider中看到,在@After方法中进行每次测试后,应该关闭SQL数据库,但是在某些测试中,仍然会出现异常。
public OperatingTests(Object initState) throws Exception {
// This is a workaround for the fact that Robolectric's paramaterized
// test runner does not properly work with enum classes
this.initState = Enum.valueOf(States.class, initState.toString());
sm = new ClassTester(ApplicationProvider.getApplicationContext());
sm.setInitialState(this.initState);
sm.initialize();
sm.getDataFetchRequestDB().clear();
AnnFetchRequestRepository.getHelper(ApplicationProvider.getApplicationContext()).clear();
}
@After
public void tearDown() {
SQLiteManager.closeDatabases(ApplicationProvider.getApplicationContext());
}
有时候,当我全部进行测试时,我会在其中一些测试中遇到相同的异常