小编her*_*hes的帖子

Android 插桩测试在测试使用 RoomDatabase.withTransaction 的挂起函数时会冻结

我正在尝试测试以下 LocalDataSource 函数NameLocalData.methodThatFreezes函数,但它冻结了。我该如何解决这个问题?或者我如何以另一种方式测试它?

要测试的类

class NameLocalData(private val roomDatabase: RoomDatabase) : NameLocalDataSource {

  override suspend fun methodThatFreezes(someParameter: Something): Something {
    roomDatabase.withTransaction {
      try {
        // calling room DAO methods here
      } catch(e: SQLiteConstraintException) {
        // ...
      }
      return something
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

测试班

@MediumTest
@RunWith(AndroidJUnit4::class)
class NameLocalDataTest {
  private lateinit var nameLocalData: NameLocalData

  // creates a Room database in memory
  @get:Rule
  var roomDatabaseRule = RoomDatabaseRule()

  @get:Rule
  var instantTaskExecutorRule = InstantTaskExecutorRule()

  @Before
  fun setup() = runBlockingTest {
     initializesSomeData()
     nameLocalData = …
Run Code Online (Sandbox Code Playgroud)

testing android suspend android-room

5
推荐指数
1
解决办法
338
查看次数

标签 统计

android ×1

android-room ×1

suspend ×1

testing ×1