У меня есть мой класс DAO для комнат, подобный этому
@Dao
interface SourceDao {
@Query("SELECT * FROM source_table")
fun getAllSourceItems(): LiveData<List<Source>>
@Query("SELECT * FROM source_table WHERE sourceType = :filterType")
fun filterSourceItems(filterType:Int): LiveData<List<Source>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertSource(source: Source)
@Delete
fun deleteSource(source: Source)
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAllSources(sourceList:List<Source>)
}
Я пытался написать инструментальный тест для одного из методов, и он всегда возвращал ноль, я установил правило как Instanttaskexecutorrule, но все еще жилые данные.значение возвращает ноль, ниже мой тестовый код
@RunWith(AndroidJUnit4::class)
class CreateSourceInstrumentationTest {
private lateinit var db:AppDatabase
@get:Rule
var rule = InstantTaskExecutorRule()
@Before
fun createDbConnection() {
val context = ApplicationProvider.getApplicationContext<Context>()
db = Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java).build()
}
@Test
fun getAllSourceCategoryItems() {
// test insert a source item
val testSource = Source("foo", 1)
db.sourceDao().insertSource(testSource)
Assert.assertEquals(listOf(testSource), db.sourceDao().getAllSourceItems().value)
}
@After
fun closeDb() {
db.close()
}
}
getAllSourceCategoryItems () всегда терпит неудачу, так как livingata из dao равен null, как это исправить?