2013-04-09 32 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