我刚刚在android上测试了房道的official docs。
该页面上列出了一个方法:
@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的情况也是如此。
发布于 2019-04-02 06:06:53
您可以随时在init方法中插入要测试的任何对象,如下所示:
@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)
}
这样,您就可以编写更小的测试,只关注于读取。
https://stackoverflow.com/questions/54921344
复制相似问题