如何模拟SQLiteDatabase实例?

时间:2016-05-23 16:54:59

标签: android mockito android-testing

在我要测试的类中,我在构造函数中有这段代码

public MyClass (Context context){
    String db = context.getDatabasePath("mydb.db").getPath();
    this.connection = SQLiteDatabase.openOrCreateDatabase(db, null);
}

mydb.db位于src / test / resources

这是我的测试类

@RunWith(MockitoJUnitRunner.class)
public class MyTest   {
    MyClass myClass;
    @Mock
    Context context;
    @Mock
    SQLiteDatabase sqLiteDatabase;
    @Before
    public void setUp(){
        MockitoAnnotations.initMocks(this);
        URL resource =this.getClass().getClassLoader().getResource("mydb.db");
        File file = new File(resource.getPath());
        doReturn(file).when(context).getDatabasePath("mydb.db");
        myClass=new MyClass(context);    
    }
}

运行测试时,我有例外:

java.lang.RuntimeException: Method openOrCreateDatabase in android.database.sqlite.SQLiteDatabase not mocked. See http://g.co/androidstudio/not-mocked for details.

我在build.gradle中添加了这个

testOptions {
    unitTests.returnDefaultValues = true
}

现在异常摆脱了。

但是MyClass的连接是空的!

是否可以仅使用Mockito进行测试?

0 个答案:

没有答案