2

我刚开始使用机器人。该演示可以毫无问题地运行,但是当我使用EditTextand编写第一个测试脚本时Button,出现了问题。我的环境是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();
    } 
}

一个问题是name和psw都填在第一个EditText,另一个是solo.clickOnButton(0);点击第一个EditText,不是第一个Button。我也尝试使用 的文本名称Button,但结果是一样的。似乎所有的操作都放在了第一位EditText。我想问有什么问题。有什么建议吗?谢谢

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。

如果这不起作用,请将其发布在机器人开发者页面上,我会看看它。

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

于 2012-03-31T15:21:50.513 回答