2013-03-17 132 views
0

我已經能夠成功運行一個測試方法的android junit測試,但是當涉及多個測試方法時,它只運行第一個測試,在tearDown之後,活動執行對於後續測試不會重新啓動。結果,我的所有測試方法都失敗了,保存了第一個。Robotium:第二次測試沒有啓動

在調試時,我注意到setUp方法在運行第一個testMethod之前成功啓動了MainActivity,但是在第二個testMethod啓動之前重新訪問,同樣的活動沒有得到重新啓動。代碼如下:

package PACKAGE.test; 

import com.jayway.android.robotium.solo.Solo; 
import android.test.ActivityInstrumentationTestCase2; 

public class Login extends ActivityInstrumentationTestCase2 { 
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "*.*.MainActivity"; 
private static Class<?> launcherActivityClass; 
static { 
    try { 
     launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
    } 
    catch (ClassNotFoundException e) { 
     throw new RuntimeException(e); 
    } 
} 

    @SuppressWarnings("unchecked") 
    public Login() throws ClassNotFoundException { 
    super(launcherActivityClass); 
} 

private Solo solo; 

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

@Test 
public void testLoginScreen() { 
    solo.enterText(0, "user-name"); 
    solo.enterText(1, "pwd"); 
    solo.clickOnButton("Login"); 
    solo.waitForActivity("*.*.*.nextActivity"); 
    solo.clickOnRadioButton(2); 
} 

@Test 
public void testSearch(){ 
    solo.enterText(0, "user-name"); 
    solo.enterText(1, "pwd"); 
    solo.clickOnButton("Login"); 
    solo.waitForActivity("*.*.*.nextActivity"); 
    solo.clickOnRadioButton(1); 
} 


public void tearDown() throws Exception { 
     solo.finishOpenedActivities(); 
     super.tearDown(); 
} 

} 
+1

它看起來OK。無論如何@Test註解是junit4註釋。我確定,在android上沒有辦法運行junit4。你使用junit 3還是junit4? – maszter 2013-03-17 18:27:01

+0

你爲什麼叫super.tearDown();?它不在機器人的入門頁面中調用。和super.setUp(); – 2013-03-18 09:30:55

+0

對遲到的答覆道歉!還沒有習慣於stackoverflow的方式! – MMehta 2013-04-24 19:11:05

回答

3

您可能需要您的@Override拆卸方法

@Override 
public void tearDown() throws Exception { 
    solo.finishOpenedActivities(); 
    super.tearDown(); 
}