Как сохранить активность в конце теста? - PullRequest
3 голосов
/ 19 апреля 2011

Я пытаюсь написать тест, который выполняет рабочий процесс в моем приложении. Тем не мение; Мне нужно разделить мой тест на две части. Сценарий выглядит примерно так:

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

Проблема, с которой я столкнулся, заключается в том, что я не могу автоматизировать действия в Галерее, поэтому для этого требуются некоторые ручные действия. Поэтому я планирую автоматизировать первую часть, то есть запустить мое приложение и запустить Gallery, затем вручную выбрать изображение и запустить вторую часть моего автоматического теста.

Проблема в конце первой части автоматизации, действие закрыто, даже если я не делаю шаг tearDown и не вызываю Activity.finish ()

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

package com.myapp.android.testWithAPK; 
import com.jayway.android.robotium.solo.Solo; 
import android.test.ActivityInstrumentationTestCase2; 
public class MyTest extends ActivityInstrumentationTestCase2 { 
        private static final String TARGET_PACKAGE_ID = "com.myapp.android"; 
        private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = 
"com.myapp.android.ui.Main"; 
        private static Class<?> launcherActivityClass; 
        static { 
                try { 
                        launcherActivityClass = Class 
                                        .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
                } catch (ClassNotFoundException e) { 
                        throw new RuntimeException(e); 
                } 
        } 
        @SuppressWarnings("unchecked") 
        public MyTest() throws ClassNotFoundException { 
                super(launcherActivityClass); 
        } 
        private Solo solo; 
        @Override 
        protected void setUp() throws Exception { 
                solo = new Solo(getInstrumentation()); 
        } 
        public void testCreatePostCard() throws InterruptedException{ 
                solo.clickOnText("Make a postcard"); 
                solo.clickOnText("Choose photo"); 

1 Ответ

0 голосов
/ 14 декабря 2012

Я немного догадываюсь, потому что ваш код обрезан, но я считаю, что вы выполняете один тест, затем выполняете шаг вручную, затем выполняете второй тест (с помощью другой команды adb) Я прав? Если это так, то это будет вашей проблемой, так как каждый раз, когда вы начинаете новый тест, он удаляет старые действия вашего приложения. Чтобы решить эту проблему, нужно создать один тест, в котором обе части будут немного посередине теста, ожидая, пока следующая часть теста окажется в правильном состоянии, способ проверить это будет просто использовать Командой sleep на несколько секунд, и если это сработает, улучшите этот код, поместив секцию ожидания, ожидающую только элемент, присутствующий на экране, к которому возвращается приложение.

...