2010-02-22 15 views
9

Encontré una herramienta para Pruebas de Instrumentación llamada Robotium. Es fácil y simple para la prueba de caja negra de aplicaciones de Android. Podemos utilizarlo de la siguiente manera:Ejemplos de Robotium

solo.clickOnText("Other"); 
    solo.clickOnButton("Edit"); 
    assertTrue(solo.searchText("Edit Window")); 
    solo.enterText(1, "Some text for testing purposes") 
    solo.clickOnButton("Save"); 
    assertTrue(solo.searchText("Changes have been made successfully")); 
    solo.clickOnButton("Ok"); 
    assertTrue(solo.searchText("Some text for testing purposes")); 

cualquier organismo puede tener más idea al respecto? Puede alguno informe a cómo podemos utilizarlo para webviews y de listas, etc.

Respuesta

15

Por favor, vea la página wiki de control de calidad para la pregunta común y respuestas sobre lo que es compatible con Robotium: http://code.google.com/p/robotium/wiki/QuestionsAndAnswers

También por favor vaya a la página Introducción : http://code.google.com/p/robotium/wiki/Getting_Started

Allí encontrará un ejemplo de proyecto de prueba que descarga y busca ideas. También puede descargar el javadoc desde: http://code.google.com/p/robotium/downloads/list para ver qué funcionalidad hay en este momento.

Para ver los cursos visite: http://code.google.com/p/robotium/wiki/RobotiumTutorials

Sinceramente, Renas

2

método searchText busca también listviews. Puede usarlo junto con aserciones para asegurarse de que sus ListViews contengan el contenido correcto

1

Para hacer clic en Lista. Si su actividad es del tipo ListActivity, puede usar clickInList con un parámetro que es el índice de la línea en la que se debe hacer clic. En otros casos, use clickInList con dos parámetros: índice de pantalla de vista de lista y número de línea. Para WebView, si carga una página, debe usar waitForText() mathod para verificar el contenido.

ejemplos más: http://bitbar.com/blog/54/automated-ui-testing-android-applications-robotium

14

puedo decir, lo que no eres capaz de hacer con Robotium :)

  1. pruebas de Cross Actividades, Robotium es capaz de trabajar solamente con el mismo certificado de aplicación, de lo contrario obtendrá una excepción de eventos de inyección (por ejemplo, no puede hacer clic en el teclado de pantalla)

  2. Robotium no tiene mecanismo para manejar alertas/popus/diálogos esperados/inesperados. Por ejemplo, las pruebas de iOs javascript tienen un indicador booleano muy simple y una devolución de llamada para manejar las alertas

  3. Robotium tiene un gran problema con los métodos de desplazamiento automático (posiblemente actualmente está corregido) por ejemplo, si está buscando el texto, que no se muestra Robotium se apilará al final de la vista de desplazamiento y hará assertTrue (falso) para detener el desplazamiento

  4. Robotium tiene una lógica assertTrue (falsa) para informar problemas/situaciones inesperadas en lugar de devolver algún valor Enum o booleano (éxito/error) entonces, para una buena prueba de resistencia que se ejecuta las 24 horas, los 7 días de la semana, debe agregar sus propios métodos que no detengan la prueba, simplemente maneje el 'valor no haga clic en xy' del resultado

  5. Tendrá que implementar alguna lógica para hacer clic en elementos en la vista de desplazamiento/lista.Debido a Robotium hace clic en el centro de la vista, siempre obtendrá excepción o assertTrue (falso) cuando intenta hacer clic en la vista con sólo el 20% parte mostrada

En Robotium general es muy fresco y muy útil y me gusta es mucho :) ¡Y no puedo imaginar la vida sin esta gran biblioteca!

+2

puedes detectar los errores de Robotium usando: try {...} catch (Error err) {..} // De esta forma, Robotium no bloqueará tu prueba. – user643154

+1

Puede obtener la vista principal y hacer clic en ella, a veces mucho más grande que la imagen o el texto. Espero que ayude a alguien. – zest

0
  • Vistas

Para listviews que puede utilizar siguiente método solo.getCurrentListViews() que devuelven una serie de vistas de lista en la pantalla actual, y luego iterar o conseguir otros tipos de objetos (widgets de Android) de ellas por ejemplo, es necesario hacer clic vistas de imágenes de todas las listas de la pantalla que no se redirigir a otra actividad y sólo cambia de estado de otros objetos:

ArrayList<ListView> lw = solo.getCurrentListViews(); // get all list views 
// logging to logcat 
Log.i("stats", "number of list views on the current screen: " + aLw.size()); 
if (aLw.size() != 0) 
for (ListView l: aLw) { 
    // Take all image views from list and click each 
    ArrayList <ImageView> aIw = solo.getCurrentImageViews(l); 
    Log.i("stats", "list view " + l + " contains " + iw.size() + " image views."); 
    if (aIw.size() != 0) 
    for (int i = 0; i < aIw.size();) { 
     // clicking 
     solo.clickOnView(aIw.get(i)); 
     Log.i("click", "image view " + i " clicked."); 
    } 
} 

Puede escribir texto en editText ver u obtener texto de textViews. Puede combinar Robotium con Java y Android API. Por ejemplo la visibilidad de verificación de las imágenes en la pantalla usando getVisibility() método y comparándolo con tres estados principales View.GONE, View.VISIBLE, View.INVISIBLE. O puede verificar la conexión utilizando el método Java HttpURLrequest antes de la ejecución de sus pruebas.

  • Otros

Si tiene fuente que puede tomar objetos desde cualquier presentación conocer su identificación! También existe una gran cantidad de cosas increíbles como solo.waitForActivity(), solo.assertMemoryNotLow(), solo.takeScreenShot().

Más ejemplos sobre Robotium uso que puede encontrar aquí uniendo Robotium community.