在Android Room中进行JUnit测试时,如果你遇到了这个异常:AsyncTask#1 java.lang.IllegalStateException: 无法执行此操作,因为没有当前事务
,可以尝试以下解决方法:
@RunWith(JUnit4::class)
注解,以使用JUnit4运行器。@RunWith(JUnit4::class)
class MyDaoTest {
// ...
}
@Test
注解。@Test
fun testMyDao() {
// ...
}
@RunWith(AndroidJUnit4::class)
注解,以使用AndroidJUnit4运行器。@RunWith(AndroidJUnit4::class)
class MyDaoTest {
// ...
}
runBlockingTest
协程构建器来运行测试方法,以确保在当前事务中执行操作。@Test
fun testMyDao() = runBlockingTest {
// ...
}
@Test
fun testMyDao() {
myDatabase.beginTransaction()
try {
// 执行数据库操作
myDatabase.setTransactionSuccessful()
} finally {
myDatabase.endTransaction()
}
}
通过使用上述方法之一,你应该能够解决这个异常并成功运行Android Room的JUnit测试。