【发布时间】:2019-08-31 21:19:01
【问题描述】:
尝试为 DAO 类编写单元测试用例。 但是插入数据后,当我尝试获取数据进行测试时,它总是返回一个空数组。
检查 fetchAllDataCheck() 我为编写测试用例所遵循的链接: https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0
class NewsDataBaseTest {
@Mock
lateinit var newsDao: NewsDao
@Mock
lateinit var db: AppDatabse
@Mock
lateinit var contextMock: Context
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
newsDao = Mockito.mock(NewsDao::class.java)
contextMock = Mockito.mock(Context::class.java)
db = Room.inMemoryDatabaseBuilder(contextMock, AppDatabse::class.java)
// Allowing main thread queries, just for testing.
.allowMainThreadQueries()
.build()
}
@After
@Throws(IOException::class)
fun closeDB() {
db.close()
}
@Test
@Throws(Exception::class)
fun fetchAllDataCheck() {
val note = listOf(
Article(
null, "Author1", "Title1", "Description1",
"URL1", "URLTOIMAGE1", "12", "content1", null
)
)
newsDao.insert(note)
val note1 = listOf(
Article(
null, "AuthorTest22", "Title22", "Description222",
"UR2L2", "URLTOIMAGE2211", "1212222", "co222ntent", null
)
)
newsDao.insert(note1)
/*till this the test case is passed*/
var allWords = newsDao.getAllNewsData() **// this array is coming empty**
assertEquals(allWords[0].author, "Author1")
assertEquals(allWords[1].author, "AuthorTest22")
}
//DAO类
@Dao
interface NewsDao {
@Query("SELECT * from tbl_newsData")
fun getAllNewsData(): List<Article>
@Insert(onConflict = REPLACE)
fun insert(newsData: List<Article>)
@Query("DELETE from tbl_newsData")
fun deleteAll()
@Query("DELETE from tbl_newsData")
fun deleteData()
}
【问题讨论】:
标签: android sqlite junit android-room android-mvp