首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >房间:测试DAO Apis的正确方法

房间:测试DAO Apis的正确方法
EN

Stack Overflow用户
提问于 2019-02-28 16:31:19
回答 1查看 120关注 0票数 1

我刚刚在android上测试了房道的official docs

该页面上列出了一个方法:

代码语言:javascript
运行
复制
@Test
    @Throws(Exception::class)
    fun writeUserAndReadInList() {
        val user: User = TestUtil.createUser(3).apply {
            setName("george")
        }
        userDao.insert(user)
        val byName = userDao.findUsersByName("george")
        assertThat(byName.get(0), equalTo(user))
    }

我对此有疑问。

每个方法都应该单独测试,这不是违反了junit测试的原则吗?

在这里,我们同时测试写入和读取。如果测试失败,我们不知道哪个api有buggy -写的api还是读的api。

我想如果我们想测试read api。当然,写操作应该直接使用SQLiteOpenHelper来完成,这样就可以保证插入一个项目,而我们的测试只是测试read api。

对于我们想要测试编写api的情况也是如此。

EN

回答 1

Stack Overflow用户

发布于 2019-04-02 06:06:53

您可以随时在init方法中插入要测试的任何对象,如下所示:

代码语言:javascript
运行
复制
@Before
fun createDb() {
    val context = ApplicationProvider.getApplicationContext<Context>()
    db = Room.inMemoryDatabaseBuilder(
            context, TestDatabase::class.java).build()
    userDao = db.getUserDao()
    val user: User = TestUtil.createUser(3).apply {
        setName("george")
    }
    userDao.insert(user)
}

这样,您就可以编写更小的测试,只关注于读取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54921344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档