如何在Android中创建用于检测测试的隔离上下文

问题描述 投票:0回答:1

我想使用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))
    }
}
android accountmanager instrumented-test
1个回答
0
投票

我用Robolectric解决了这个问题:)

与传统的基于仿真器的Android测试不同,Robolectric测试在沙箱内运行,允许Android环境精确配置到每个测试的所需条件,将每个测试与其邻居隔离,并使用提供分钟的测试API扩展Android框架控制Android框架的行为和断言状态的可见性。

robolectric.org

© www.soinside.com 2019 - 2024. All rights reserved.