2010-08-23 73 views
2

我刚开始使用robotium。演示程序可以毫无问题地运行,但是当我使用EditTextButton编写第一个测试脚本时,出现了问题。我的环境是android 2.1,脚本非常简单,只需输入用户名和密码,然后点击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(); 
    } 
} 

的一个问题是双方的名字和PSW填充在第一EditText,另一种是solo.clickOnButton(0);单击第一个EditText,而不是第一Button。我也尝试使用Button的文本名称,但结果是一样的。看起来所有的操作都被放到了第一个EditText。我想问题是什么。 ?任何建议感谢

+0

这就是我写的解决这个问题。 http://chanakaudaya.wordpress.com/2012/03/31/robotium-button-click-not-working-solution – 2012-03-31 15:21:50

回答

1

你可以试试这个标记添加到您的AndroidManifest.xml:

<uses-sdk android:targetSdkVersion="7"/>其中7意味着Android 2.1系统。

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

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

真诚, Renas

+0

尊敬的Renas, 对不起,我无法打开此链接 – Joe 2010-08-30 02:06:43

5

我有看,你要测试的应用程序,问题是,你不说明它支持高密度屏幕。当您在高密度仿真器/设备上使用它时,会给Robotium带来问题。

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

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

如果该标签添加到您的AndroidManifest.xml那么它会工作。

+0

现在问题解决了。谢谢了很多。 – Joe 2010-09-13 02:02:01

+1

乔为什么不接受这个答案... – JPM 2012-03-29 14:49:56

3

希望你正在服用的输入文本作为一个数组.. 0和1 ..

但是希望你没有初始化数组

import java.util.Arraylist; 

希望,如果你初始化数组列表,将工作。试试。

0

我也有这个问题,我找不到与robotium解决方案。然后我转移到随SDK提供的安卓工具。我所做的是在下面提到。这对我来说没有任何问题。这..

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

private Button msButton; 

然后在设置方法得到的按钮实例。

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