无法使我的断言当前活动起作用

时间:2011-10-21 13:17:09

标签: android robotium

我有2个活动,第一个是启动,其中创建方法导致第二个活动始终启动。 我的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测试我的应用程序的问题,就像用户将使用它一样,即不作弊并开始于不同的活动:(

1 个答案:

答案 0 :(得分:7)

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