我想使用AccountManager运行一些测试、添加和获取帐户,但是我想在一个新的上下文中执行这些操作,而不使用模拟器中的帐户。
有可能这样做吗?
我的类示例
@RunWith(AndroidJUnit4::class)
class AccountTest {
private val ACCOUNT_TYPE = "com.android.account"
private lateinit var accountManager: AccountManager
@Before
fun init() {
accountManager = AccountManager.get(ApplicationProvider.getApplicationContext())
}
@Test
fun addAccountTest(){
val account = Account("test", ACCOUNT_TYPE)
val result = accountManager.addAccountExplicitly(account, null, null)
assertThat(result, `is`(true))
}
@Test
fun getAccountTest() {
val accountList = accountManager.getAccountsByType(ACCOUNT_TYPE).toList()
assertThat(accountList.size, `is`(0))
}
}发布于 2019-04-01 11:05:04
我用Robolectric解决了这个问题:)
与传统的基于仿真器的Android测试不同,Robolectric测试运行在沙箱内,允许为每个测试精确地配置Android环境,将每个测试与其邻居隔离开来,并使用测试API扩展Android框架,这些API为Android框架的行为提供了微小的控制,并为断言提供了状态的可见性。
robolectric.org
https://stackoverflow.com/questions/55168495
复制相似问题