2

ロボティウムを使い始めたばかりです。デモは問題なく実行できますが、 と を使用して最初のテスト スクリプトを作成したときにEditTextButton問題が発生しました。私の環境はAndroid 2.1で、スクリプトは非常に単純です。ユーザー名とpswを入力し、sumbitボタンをクリックしてログインするだけです。
スクリプトは次のとおりです。

package com.tpc.test;

import com.tpc.login.Login;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.Smoke;

public class LoginTest extends ActivityInstrumentationTestCase2<Login>{

    private Solo solo;

    public LoginTest() {
        super("com.tpc", Login.class);

    }

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


     @Smoke
     public void testApp() throws Exception {
         String appName = solo.getCurrentActivity().getClass().getSimpleName();
         System.out.println(appName);
         solo.getButton(0).getClass().getSimpleName();
         solo.assertCurrentActivity("Expected login activity", appName); 
                 System.out.println(solo.getButton(0).getText());//can get the text of button
         solo.enterText(0, "name"); //input name to the 1st EditText is OK
         solo.enterText(1, "psw");   // Actually inout psw after name to the 1st EditText
         solo.clickOnButton(0);       //Expect click the 1st button.Actually click the 1st EditText
         //assert of sample, not been modified      
         boolean expected = true;
         boolean actual = solo.searchText("Note 1") && solo.searchText("Note 2");
         assertEquals("Note 1 and/or Note 2 are not found", false, actual);
     }

    @Override
    public void tearDown() throws Exception {
        try {
            solo.finalize();
        } catch (Throwable e) {
            e.printStackTrace();
        }
        getActivity().finish();
        super.tearDown();
    } 
}

1 つの問題は、name と psw の両方が最初EditTextに入力されていることです。もう 1 つは、最初ではなく最初をクリックsolo.clickOnButton(0);することです。のテキスト名も使用しようとしましたが、結果は同じでした。すべての操作が最初に配置されているようです。何が問題なのか知りたいです。何か提案はありますか?ありがとうEditTextButtonButtonEditText

4

4 に答える 4

5

あなたがテストしたいアプリケーションを見てきましたが、問題は高密度画面をサポートしていると述べていないことです。高密度のエミュレーター/デバイスで使用していると、Robotium に問題が発生します。

AndroidManifest.xml に次のタグを追加する必要があります。

<supports-screens android:anyDensity="true"/>

そのタグを AndroidManifest.xml に追加すると、機能します。

于 2010-09-09T20:47:27.143 に答える
2

入力テキストを配列として取っていることを願っています.. 0と1..

しかし、配列を初期化していないことを願っています

import java.util.Arraylist;

arraylistを初期化すればうまくいくと思います。試してみてください。

于 2011-04-19T06:49:01.070 に答える
1

このタグを AndroidManifest.xml に追加してみてください:

<uses-sdk android:targetSdkVersion="7"/>ここで、7 は Android 2.1 を意味します。

それでもうまくいかない場合は、これを robotium 開発者ページに投稿してください。確認します。

http://groups.google.com/group/robotium-developers

敬具、レナス

于 2010-08-26T20:49:04.717 に答える
0

私もこの問題を抱えていて、ロボティウムで解決策を見つけることができませんでした。次に、SDK で提供される Android インストルメンテーションに移動します。私が行ったことは以下に記載されています。これは私にとって問題なく機能しました。ここにあります ..

最初に、ボタンのプライベート変数をメンバー変数として定義します

private Button msButton;  

次に、setup メソッドでボタン インスタンスを取得します。

mButton = (Button) solo.getCurrentActivity().findViewById(
com.marakana.android.simple_intent.R.id.sendButton); 

次に、以下で説明するように、テスト メソッドの UI スレッドでボタン クリックを呼び出します。

//Test button method

public void testButtonClick() {

//Get the current activity and request to run onUI thread
solo.getCurrentActivity().runOnUiThread(new Runnable() {

public void run() { 

//Request focus for the button
mButton.requestFocus();
}
});

//Send the button click event
this.sendKeys(KeyEvent.KEYCODE_DPAD_CENTER);

}

それだけです.. これで、他の Robotium 機能でボタンをテストできます。

于 2012-03-31T15:21:50.513 に答える