3

私には2つのアクティビティがあります。最初のアクティビティはスタートアップであり、そのcreateメソッドで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 を起動していることがわかりますが、新しいアクティビティが起動されたことを認識していないように見えますが、常に現在のアクティビティがログイン 1 であると考えています。編集:ログインビューにボタンを追加し、ボタンクリックで新しいアクティビティを起動すると、Robotium がクリックを実行し、新しいアクティビティが正常に起動されたことを検出します。

編集: Robotium の制限のよう ですhttp://groups.google.com/group/robotium-developers/browse_thread/thread/79a70038c16e35e6ユーザーはそれを使用します。つまり、不正行為をしたり、別のアクティビティを開始したりしません:(

4

1 に答える 1

7

コンストラクター solo = new Solo(Instrumentation instrumentation) を使用する必要があり、Solo オブジェクトを作成した後、最初のアクティビティを開始するために getActivity() を呼び出します。それはうまくいくでしょう。

于 2011-11-04T18:17:11.733 に答える