2011-10-21 54 views
3

我有兩項活動,第一項是創建一個在創建方法中導致第二個項目始終啓動的項目。 我Robolectric測試通過精細無法讓我的assert currrent活動正常工作

活動

public class LoginActivity extends Activity { 

/** Called when the activity is first created. */ 
@Override  

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.loginview); 

    Intent intent = new Intent(this,MainActivity.class); 
    startActivity(intent); 
} 

我知道我的行爲能正常工作的原因在我的設備,並在模擬器上

我Robolectric測試

public void testLoginFirstTime() throws Exception 
{ 
    LoginActivity activity = new LoginActivity();   
    activity.onCreate(null); 
    assertThat(activity, new StartedMatcher(MainActivity.class));   
} 

我Robotium啓動測試

public void setUp() throws Exception { 
    solo = new Solo(getInstrumentation(), getActivity()); 
} 


public void testLoginFirstTime() throws Exception 
{ 
    solo.assertCurrentActivity("Expected MainActivity to launch", MainActivity.class); 
} 

我的機器人斷言有什麼問題?它總是認爲當前的活動是登錄的,儘管當我看着模擬器/設備時,我可以看到Robotium確實啓動了MainActivity,但它似乎並不知道新活動已啓動。 編輯:意思是說如果我添加一個按鈕到我的登錄視圖,並通過點擊按鈕啓動新的活動,然後Robotium執行點擊並檢測到新活動已啓動好。

編輯: 看起來像它的一個Robotium限制 http://groups.google.com/group/robotium-developers/browse_thread/thread/79a70038c16e35e6 但是它仍然給我留下了如何測試我的應用程序robotium相同的方式,用戶將使用它,即不作弊,並在啓動問題不同的活動:(

回答

7

您需要使用構造函數solo = new Solo(Instrumentation instrumentation),然後在創建Solo對象後調用getActivity()以啓動第一個Activity。然後它將工作。