dagger2中的AndroidUnit测试室

时间:2019-03-29 03:46:08

标签: android unit-testing android-room dagger-2

我为会议室数据库创建了dagger2模块,如下所示:

@Module
public class RoomModule {

    @AppScope
    @Provides
    StateDataBase dbEngineerProvider(Context context){
        return Room.databaseBuilder(context, StateDataBase.class, "State.db").build();
    }

    @AppScope
    @Provides
    UserDao getUserDao(StateDataBase db) {
        return db.getUserDao();
    }
}

我在应用程序类中初始化了匕首:

    @Override
    public void onCreate() {
        super.onCreate();
        Timber.plant(new Timber.DebugTree());

        component = DaggerAppComponent.builder()
                .networkModule(new NetworkModule(this))
                .build();
    }

    public AppComponent getAppComponent() {
        return component;
    }
}

我想知道如何通过匕首从我的房间数据库中进行真正的测试而不是模拟测试吗?

我想在我的数据库中插入数据,在我的应用程序中,我使用这些数据!!! 例如,在测试中,我输入用户名和密码,然后在运行应用程序时使用此数据登录应用程序!有可能吗?

1 个答案:

答案 0 :(得分:0)

@Test
    fun testRoomDatabase() {
        val dao = Room.databaseBuilder(context!!, Database::class.java, "Database.db").build().dao()

        val alertList = ArrayList<Alert>()

        val alert = Alert()
        alert.alertId = 22603
        alert.alertType = 3
        alert.geoFence = ""

        val alert1 = Alert()
        alert1.alertId = 12603
        alert1.alertType = 10
        alert1.geoFence = ""

        alertList.add(alert)
        alertList.add(alert1)

        Assert.assertNotNull(alertList)
        val ids = dao.insertSelectedAlertsToDatabase(alertList)
        Assert.assertEquals(2, ids.size)
        Assert.assertFalse(1 == ids.size)

        // fetch all alerts from database
        val alerts = dao.fetchAllAlerts()/*.test().onComplete()*/
        Assert.assertNotNull(alerts)
    }

我希望您已有数据库。