Как создать изолированный контекст в Android для инструментального теста - PullRequest
0 голосов
/ 14 марта 2019

Я хочу запустить тестовое добавление и получение учетных записей с помощью 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))
    }
}

1 Ответ

0 голосов
/ 01 апреля 2019

Я решил проблему с помощью Robolectric:)

В отличие от традиционных тестов Android на основе эмулятора, тесты Robolectric выполняются в песочнице, что позволяет точно настроить среду Android на нужные условия для каждогоtest, изолирует каждый тест от его соседей и расширяет платформу Android с помощью тестовых API, которые обеспечивают минимальный контроль над поведением платформы Android и видимость состояния для утверждений.

robolectric.org

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...