2011-04-18 88 views
3

我想写一个在我的应用程序中执行工作流程的测试。然而;我需要将我的测试分成两部分。该场景是这样的:如何在测试结束时保持活动运行?

我开始我的应用程序,然后启动一个图库选择一个图像,然后返回到我的应用程序继续工作流程。

我遇到的问题是我无法在图库中自动执行动作,所以这需要一些手动操作。所以我的计划是自动化第一部分,即启动我的应用程序,然后启动Gallery,然后手动选择一个图像,然后运行我的自动化测试的第二部分。

的问题是在第一自动化部件的端部,即使我不这样做一个拆卸步骤并调用activity.finish()

活性被关闭我已经包括的代码I”的一个例子使用。所以,如果你能指出我在这里做错了什么,那将是非常棒的。我应该提到我正在使用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"); 

回答

0

我猜一点,因为你的代码被切断,但我相信你在做什么,正在运行一个测试,然后做手动工序,然后(通过另一个ADB命令)运行第二次测试,对吗?如果是这样,这将是你每次开始新测试时都会遇到的问题,它会将你的应用程序的旧活动GC删除。解决这个问题的方法是创建一个测试,在测试中间稍微等待测试的下一部分处于正确状态时执行这两个部分,测试的方法只是使用睡眠命令几秒钟,如果这样做可以通过在等待部分中等待应用程序返回到的屏幕上出现一个元素,使代码更好。

相关问题