проблема роботия - PullRequest
       3

проблема роботия

2 голосов
/ 23 августа 2010

Я только начинаю использовать robotium.Демонстрацию можно запустить без каких-либо проблем, но когда я написал первый тестовый скрипт с использованием EditText и 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();
    } 
}

Одна проблема - это имя и pswзаполняется в первом EditText, другой - solo.clickOnButton(0);, щелкните первый EditText, НЕ первый Button.Я также пытался использовать текстовое имя Button, но результат был таким же.Кажется, все операции были поставлены на первое EditText.Я хочу в чем проблема.Любое предложение? Спасибо

Ответы [ 4 ]

5 голосов
/ 10 сентября 2010

Я посмотрел на приложение, которое вы хотите протестировать, и проблема в том, что вы не утверждаете, что оно поддерживает экраны высокой плотности.Это создает проблемы с Robotium, поскольку вы используете его на эмуляторе / устройстве высокой плотности.

Вам необходимо добавить следующий тег в AndroidManifest.xml:

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

Если вы добавите этот тег в свой AndroidManifest.xml, он будет работать.

3 голосов
/ 19 апреля 2011

Надеюсь, вы берете вводимый текст в виде массива .. 0 и 1 ..

Но надеюсь, что вы не инициализировали массив

import java.util.Arraylist;

Надеюсь, это сработает, если вы инициализируете arraylist. Попробуй.

1 голос
/ 27 августа 2010

Вы можете попытаться добавить этот тег в свой AndroidManifest.xml:

<uses-sdk android:targetSdkVersion="7"/>, где 7 означает Android 2.1.

Если это не сработает, пожалуйста, опубликуйте это на странице разработчиков robotium, и я посмотрю на нее.

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

С уважением, Renas

0 голосов
/ 31 марта 2012

У меня тоже была эта проблема, и я не смог найти решение с помощью robotium. Затем я перехожу к инструментарию Android, поставляемому с SDK. То, что я сделал, упомянуто ниже. Это работало без каких-либо проблем для меня. Вот оно ..

Сначала определите личную переменную для кнопки как переменную-член

private Button msButton;  

Затем получите экземпляр кнопки с помощью метода установки.

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

Затем вызовите нажатие кнопки в потоке пользовательского интерфейса в методе тестирования, как указано ниже.

//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.

...