Android 机器人问题

Android 机器人问题,android,robotium,Android,Robotium,我刚开始使用机器人。演示可以毫无问题地运行,但当我使用EditText和按钮编写第一个测试脚本时,出现了问题。我的环境是android 2.1,脚本非常简单,只需输入用户名和psw,然后单击sumbit按钮即可登录。 脚本如下: package com.tpc.test; import com.tpc.login.Login; import com.jayway.android.robotium.solo.Solo; import android.test.ActivityInstrument

我刚开始使用机器人。演示可以毫无问题地运行,但当我使用
EditText
按钮编写第一个测试脚本时,出现了问题。我的环境是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();
    } 
}
package com.tpc.test;
导入com.tpc.login.login;
导入com.jayway.android.robotium.solo.solo;
导入android.test.ActivityInstrumentationTestCase2;
导入android.test.suitebuilder.annotation.Smoke;
公共类LoginTest扩展了ActivityInstrumentationTestCase2{
私人独奏;
公共登录测试(){
super(“com.tpc”,Login.class);
}
public void setUp()引发异常{
solo=新的solo(getInstrumentation(),getActivity());
}
@冒烟
public void testApp()引发异常{
字符串appName=solo.getCurrentActivity().getClass().getSimpleName();
System.out.println(appName);
solo.getButton(0.getClass().getSimpleName();
solo.assertCurrentActivity(“预期登录活动”,appName);
System.out.println(solo.getButton(0.getText());//可以获取按钮的文本
solo.enterText(0,“name”);//在第一版文本中输入名称是可以的
solo.enterText(1,“psw”);//实际上,在第1版文本的名称后输入psw
solo.clickOnButton(0);//期望单击第一个按钮。实际单击第一个编辑文本
//示例的断言,未被修改
布尔期望值=真;
布尔实际值=solo.searchText(“注1”)和&solo.searchText(“注2”);
资产质量(“未发现注释1和/或注释2”),虚假,实际;
}
@凌驾
public void tearDown()引发异常{
试一试{
solo.finalize();
}捕获(可丢弃的e){
e、 printStackTrace();
}
getActivity().finish();
super.tearDown();
} 
}

一个问题是在第一个
EditText
中填写了name和psw,另一个问题是
solo.clickOnButton(0)单击第一个
编辑文本
,而不是第一个
按钮
。我还尝试使用
按钮的文本名称,但结果是一样的。似乎所有的操作都被放到了第一个
EditText
。我想知道有什么问题。有什么建议吗?谢谢您可以尝试将此标记添加到您的AndroidManifest.xml中:

其中7表示Android 2.1

如果这不起作用,请在robotium开发者页面上发布,我会看一看

真诚地,
Renas

我查看了您要测试的应用程序,问题是您没有声明它支持高密度屏幕。在高密度仿真器/设备上使用Robotium时,会出现问题

您需要在AndroidManifest.xml中添加以下标记:


如果将该标记添加到AndroidManifest.xml中,那么它将起作用

希望您将输入文本作为数组。。0和1

但希望您没有初始化数组

import java.util.Arraylist;

如果您初始化arraylist,希望它可以工作。试试看。

我也遇到了这个问题,我无法用robotium找到解决方案。然后我转到SDK提供的android工具。我所做的如下所述。这对我来说没有任何问题。给你

首先为按钮定义一个私有变量作为成员变量

private Button msButton;  
然后在setup方法中使用获取按钮实例

mButton = (Button) solo.getCurrentActivity().findViewById(
com.marakana.android.simple_intent.R.id.sendButton); 
然后在测试方法的UI线程中调用按钮click with,如下所述

//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功能测试您的按钮。

亲爱的Renas,对不起,我无法打开此链接。这是我为解决此问题而编写的。