Есть ли способ прекратить запуск активности в инструментальных тестах Android Kotlin (ActivityTestRule) - PullRequest
1 голос
/ 26 сентября 2019

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

Это мой тестовый класс

@RunWith(AndroidJUnit4::class)
class LoginFormTest {
    @Rule @JvmField
    val loginActivityRule: ActivityTestRule<LoginActivity> = ActivityTestRule<LoginActivity>(LoginActivity::class.java)

    @Before
    fun setUp() {
    }

    @Test
    fun loginFormRendersErrorMessageWhenRequestThrowsError() {
        //logic
    }
}

То естьпросто подпись тестового класса.Как вы можете видеть в коде, я тестирую LoginActivity.LoginAcitivy запускает другое действие при нажатии кнопки.Есть ли способ отключить активность от запуска в тесте.Затем в другом методе тестирования я мог бы включить его снова.Есть ли способ сделать это?

1 Ответ

1 голос
/ 26 сентября 2019

Можно использовать ActivityTestRule для настройки запуска Intent ...

, а затем позволить LoginActivity вести себя иначе, например.основанный на действии Intent.

Однако, несмотря на то, что это технически возможно, такой подход может быть не предложен.

Не нажатие кнопки исключит необходимость настройки кода приложения.

В любом случае вы не сможете изменить отладочный APK из тестового APK.


Менее навязчивым способом может быть что-то похожее:

private boolean shouldNavigate = true;

@VisisbleForTesting
public void setShouldNavigate(boolean value) {
    this.shouldNavigate = value;
}

Так что вы можете включить / отключить это из тестового класса.С аннотацией @VisisbleForTesting это не будет загрязнять API public, поскольку .setShouldNavigate() отображается только при тестировании.

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