2013-04-09 63 views
0

我尝试测试应用程序,该应用程序每次启动应用程序时都会启动一项特殊活动。让我们打电话给这个活动AlreadyStartedActivity。测试用例看起来是这样的:使用Robotium测试已经运行的活动

public class AlreadyStartedActivityTest extends ActivityInstrumentationTestCase2<AlreadyStartedActivity> { 

    public AlreadyStartedActivityTest() { 
     super(AlreadyStartedActivity.class); 
    } 

    public void testStart() { 
     Solo solo = new Solo(getInstrumentation(), getActivity()); 

     // use solo to click and test some features of the activity. 
    } 
} 

的问题是AlreadyStartedActivityAndroidManifest.xml配置如下:

<activity android:name=".activity.AlreadyStartedActivity" 
     android:taskAffinity="" 
     android:excludeFromRecents="true" 
     android:launchMode="singleTop" /> 

singleTop避免调用AlreadyStartedActivity#onCreate,这阻止getActivity方法永远。

有什么我可以做,以避免这种情况?

问候

回答

0

它看起来像你没有正确设置测试类。您需要添加默认的构造函数:

public class AlreadyStartedActivityTest extends 
     ActivityInstrumentationTestCase2<AlreadyStartedActivity> { 

    public AlreadyStartedActivityTest() { 
     super(AlreadyStartedActivity.class); 
    } 

    public void testStart() { 
     Solo solo = new Solo(getInstrumentation(), getActivity()); 

     // use solo to click and test some features of the activity. 
    } 
} 

,可能是更好的移动SolosetUp()方法。

+0

我知道,在实际的测试用例中,我做了所有这些事情。要清楚地说明:问题是阻塞'getActivity'-方法。如果我错过了构造函数,我会得到一个异常。 – scheffield 2013-04-09 12:35:29

+0

我已经测试过这个代码,它可以工作。它开始活动并调用onCreate()方法。我正在使用robotium-solo-4.0.jar。我也使用相同的清单文件。 – andrew 2013-04-09 12:51:41