如何在Android环境中使用Roboelectric测试ORMLite?

时间:2014-03-02 18:23:21

标签: android sqlite unit-testing ormlite robolectric

我正在使用Gradle作为构建工具开发Android应用Android应用。与Android Studio和Robolectric的集成通过android-unit-test gradle plugin完成。

我也在使用ORMLite(最新版本)。

有没有办法用Robolectric 2.3-SNAPSHOT测试ORMLite DAO?

在这样的版本中,一些阴影被删除,包括SQLite阴影(参见Robolectric dropping SQLite shadows commit)。我查看了Robolectric repo中的一些单元测试,如this,但我需要一些有关如何设置与ORMLite交互的信息。

1 个答案:

答案 0 :(得分:1)

这是一个我能够编译和运行的工作示例。

@Config(emulateSdk = 18) // because Robolectric does not yet support API Level 19
@RunWith(RobolectricTestRunner.class)
public class DatabaseHelperManagerTest extends BaseTest {

    private Context context;

    public void initContext() {
        context = Robolectric.application.getApplicationContext();
        assertNotNull(context);
    }

    @BeforeClass
    public static void setup(){
        // To redirect Robolectric to stdout
        System.setProperty("robolectric.logging", "stdout");
    }

    @Test
    public void getDatabaseHelperTest(){
        initContext();

        DatabaseHelperManager databaseHelperManager = new DatabaseHelperManager();
        DatabaseHelper databaseHelper = databaseHelperManager.getHelper(context);
        assertNotNull(databaseHelper);

        Log.d(DatabaseHelperManagerTest.class.getName(), "Database Path:" + context.getDatabasePath(DatabaseHelper.DATABASE_NAME));
    }
}

供参考(在DatabaseHelperManager类中):

public DatabaseHelper getHelper(Context context) {
    return OpenHelperManager.getHelper(context, DatabaseHelper.class);
}