Ожидается исключение в тесте Android Espresso - не удается - PullRequest
0 голосов
/ 22 января 2019

Я пишу тесты в Espresso для моего приложения Android, используя Kotlin. Я хочу ожидать исключения, как в модульном тесте, и пройти тест, если такое исключение найдено.

У меня был тест, который проверял формат дополнительных функций Intent. В реализации я выбросил исключение после получения неверного значения в намерении. Я хочу пройти тест, это исключение. Выполнение результатов теста с «Тест не пройден» и java.lang.IllegalArgumentException, который совпадает с тем, что я пытаюсь поймать.

Сначала я попробовал эту аннотацию:

@Test(expected = IllegalArgumentException::class)

Затем я попытался с зависимостью org.jetbrains.kotlin:kotlin-test и следующим утверждением:

assertFailsWith<java.lang.IllegalArgumentException> {
    val activityIntent = Intent()
    activityIntent.putExtra("extra_connection_number", intentExtraConnectionNumber)
    activityRule.launchActivity(activityIntent)
}

Что также может быть важно, это то, что исключение выдается в onCreateView, начинающемся так:

@Throws(java.lang.IllegalArgumentException::class)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
    val layout = inflater.inflate(R.layout.configuration_fragment, container, false)
    var connectionNumber: Int? =
        activity!!.intent.getIntExtra(resources.getString(R.string.extra_connection_number), -1)
    if (connectionNumber == -1) {
        throw IllegalArgumentException()
    }
(...)

Намерение создано с заданным дополнительным значением, и оно терпит неудачу там, где я хотел, чтобы оно провалилось. Но выброшенное исключение не попадает в эспрессо. Зачем? Чего мне не хватает?

Я знаю, что это может быть несовместимо с Espresso, но я не могу найти нужную документацию, помогающую мне решить проблему.

...