[道插入查询覆盖率] [75%]
我试图介绍Android Room DAO类的单元测试用例。 “插入”查询代码的覆盖率仅为75%。如何达到100%?通过Jacoco插件检查代码覆盖率。
我有CategoryDaoTest工具测试类,该类测试与“ category”表相关的所有查询。 我有CategoryDao类,其中包括对表“ category”的所有查询 测试通过,但插入的代码覆盖率显示75%。在Jacoco插件中,getCategories()的代码覆盖率显示为100%。
@Dao
interface CategoryDao {
@Query("SELECT * FROM category")
fun getCategories(): LiveData<List<Category>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(category: Category)
}
@RunWith(AndroidJUnit4::class)
class CategoryDaoTest {
@Rule
@JvmField var instantTaskExecutorRule = InstantTaskExecutorRule()
private lateinit var appDatabase: AppDatabase
private lateinit var categoryDao: CategoryDao
@Before
@Throws(Exception::class)
fun initDb() {
appDatabase = Room.inMemoryDatabaseBuilder(
InstrumentationRegistry.getInstrumentation().targetContext,
AppDatabase::class.java
).allowMainThreadQueries().build()
categoryDao = appDatabase.categoryDao()
}
@After
@Throws(IOException::class)
fun closeDb() {
appDatabase.close()
}
@Test
@Throws(InterruptedException::class)
fun onFetchingCategory() {
val categoryList = LiveDataTestUtil.getValue(categoryDao.getCategories())
Assert.assertTrue(categoryList.isEmpty())
}
@Test
@Throws(InterruptedException::class)
fun onInsertingACategory() {
val createdData = CategoryFactory.makeCategory()
categoryDao.insert(createdData)
val categoryList = LiveDataTestUtil.getValue(categoryDao.getCategories())
Assert.assertTrue(categoryList.isNotEmpty())
Assert.assertTrue(categoryList.size == 1)
}
}
[1]: https://i.stack.imgur.com/HvW9q.png