3

アプリでワークフローを実行するテストを作成しようとしています。でも; テストを 2 つの部分に分割する必要があります。シナリオは次のようになります。

アプリを起動すると、ギャラリーが起動して画像が選択され、アプリに戻ってワークフローが続行されます。

私が抱えている問題は、ギャラリーでのアクションを自動化できないことです。そのため、これには手動のアクションが必要です。したがって、私の計画は、最初の部分を自動化することです。つまり、アプリを起動してギャラリーを開始し、手動で画像を選択してから、自動テストの 2 番目の部分を実行します。

問題は、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"); 
4

1 に答える 1

0

あなたのコードが途切れているので少し推測していますが、あなたがしていることは、1 つのテストを実行し、次に手動ステップを実行し、次に (別の adb コマンドを介して) 2 番目のテストを実行していると思います。私は正しいですか? その場合、新しいテストを開始するたびにアプリケーションの古いアクティビティがGCされるため、これが問題になります。これを解決する方法は、テストの次の部分が正しい状態になるのを待って、テストの途中で両方の部分を実行する 1 つのテストを作成することです。これをテストする方法は、 sleep コマンドを数秒間実行し、これが機能する場合は、アプリケーションが戻る画面にのみ存在する要素を待機する待機セクションを挿入して、このコードを改善します。

于 2012-12-13T22:39:15.120 に答える