3

我有 2 项活动,第一项是启动项,在它的 create 方法中总是会启动第二项。我的 Robolectric 测试顺利通过

活动

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));        
}

我的机器人测试

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 测试我的应用程序的问题。用户将使用它,即不作弊并从不同的活动开始:(

4

1 回答 1

7

您需要使用构造函数 solo = new Solo(Instrumentation instrumentation),然后在创建 Solo 对象后调用 getActivity() 以启动第一个 Activity。然后它将起作用。

于 2011-11-04T18:17:11.733 回答