#android #android-espresso #android-testing #firebase-test-lab
#Android #android-espresso #android-тестирование #firebase-test-lab
Вопрос:
Я пытаюсь использовать firebase ScreenShotter, который принимает форму:
ScreenShotter.takeScreenshot("main_screen_2", this /* activity */);
Я не совсем уверен, как я должен получать активность из теста эспрессо. На данный момент мой тестовый класс выглядит примерно так:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class OtherTests {
@Rule
// Replace 'MainActivity' with the value of android:name entry in
// <activity> in AndroidManifest.xml
public ActivityScenarioRule <MainActivity> mActivityRule = new ActivityScenarioRule<>(MainActivity.class);
@Test
public void getDeviceInfo() {
try {
Thread.sleep(7000);
} catch (InterruptedException e) {
e.printStackTrace();
}
TestHelper.tap("APP_HEADER");
TestHelper.expect("TRUE_HOME_BUTTON",5000);
ScreenShotter.takeScreenshot("main_screen_2", this /* activity */);
}
}
Ответ №1:
Вы должны получить scenario
, а затем запустить свой код в обратном вызове, переданном onActivity
@Test
public void getDeviceInfo() {
...
mActivityRule.getScenario()
.onActivity(activity -> ScreenShotter.takeScreenshot("main_screen_2", activity));
}
Ответ №2:
Согласно образцу приложения, предоставленного Google (внизу), вы можете наследовать от ActivityInstrumentationTestCase2
и использовать getActivity()
метод.
Однако, как объяснено здесь, этот класс устарел в пользу ActivityTestRule
который также имеет getActivity()
метод.
public void testExample() {
// Take a screenshot when app becomes visible.
onView(isRoot());
ScreenShotter.takeScreenshot("main_screen_1", getActivity());
}
Комментарии:
1. Для скриншота мне нужно передать ссылку на активность. Итак, в вашем примере, как вы получаете ссылку на экземпляр MainActivity?
2. Спасибо за разъяснение вопроса, смотрите Мой обновленный ответ.
3.
ActivityTestRule
также не рекомендуется. developer.android.com/reference/androidx/test/rule /…4.Следует использовать
ActivityScenarioRule
developer.android.com/reference/androidx/test/ext/junit/rules /…