Начать работу для тестирования
У меня есть приложение Quiz с использованием Realm db. Каждый раз, когда пользователь выбирает ответ, она нажимает кнопку и появляется новый текст для вопроса.
Это до тех пор, пока она не дойдет до конца, когда я начну новую активность и покажу оценку, основанную на правильных ответах.
Как мне начинать/тестировать (с эспрессо, я думаю), что активность без необходимости вводить вручную каждый раз все ответы и нажимать кнопку после каждого ответа, пока не дойду до последнего?
Мне нужно передать некоторые макеты данных в переменную и сделать Intent, но я не знаю, как и не могу найти что-либо, связанное с этим в Espresso
Ответы
Ответ 1
Вы можете запустить следующее мероприятие с таргетингом на него следующим образом:
@RunWith(AndroidJUnit4.class)
public class NextActivityTest {
@Rule
public ActivityTestRule<NextActivity> activityRule
= new ActivityTestRule<>(
NextActivity.class,
true, // initialTouchMode
false); // launchActivity. False to customize the intent
@Test
public void intent() {
Intent intent = new Intent();
intent.putExtra("your_key", "your_value");
activityRule.launchActivity(intent);
// Continue with your test
}
}
Полный пример: https://github.com/chiuki/android-test-demo
Сообщение в блоге: http://blog.sqisland.com/2015/04/espresso-21-activitytestrule.html
Ответ 2
Сначала рассмотрим этот вопрос: Android Monkey Runner
Затем вы можете увидеть эти руководства: Monkey Runner
Это позволяет использовать Python для проверки активности вашего Android вне вашего источника. Итак, вы можете активировать вещи и перейти к определенным действиям, например:
#! /usr/bin/env monkeyrunner
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from random import randint
print "get device"
device = MonkeyRunner.waitForConnection()
package = 'my.packaget'
activity = 'my.package.activity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
#use commands like device.touch and device.drag to simulate a navigation and open my activity
#with your activity opened start your monkey test
print "start monkey test"
for i in range(1, 1000):
#here i go emulate only simple touchs, but i can emulate swiper keyevents and more... :D
device.touch(randint(0, 1000), randint(0, 800), 'DOWN_AND_UP')
print "end monkey test"
сохраните его, а затем запустите: monkeyrunner test.py
Ответ 3
Вы можете использовать намерение запуска активности дозвона, используя приведенный ниже код.
@Rule
public IntentsTestRule<DialerActivity> mActivityRule = new IntentsTestRule<>(
DialerActivity.class);
private static final String PHONE_NUMBER = "1234567890";
private static final Uri INTENT_DATA_PHONE_NUMBER = Uri.parse("tel:" + PHONE_NUMBER);
private static String PACKAGE_ANDROID_DIALER = "com.android.phone";
static {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Starting with Android Lollipop the dialer package has changed.
PACKAGE_ANDROID_DIALER = "com.android.server.telecom";
}
}
@Test public void testDialerIntent()throws Exception
{
intending(not(isInternal())).respondWith(new Instrumentation.ActivityResult(Activity.RESULT_OK, null));
onView(withId(R.id.edit_text_caller_number)).perform(typeText(PHONE_NUMBER));
onView(withId(R.id.button_call_number)).perform(click());
intended(allOf(
hasAction(Intent.ACTION_CALL),
hasData(INTENT_DATA_PHONE_NUMBER),
toPackage(PACKAGE_ANDROID_DIALER)));
}
}
Для более подробного описания обратитесь к моему сообщению в блоге -
http://qaautomated.blogspot.in/2016/02/how-to-test-dialer-activity-with.html