Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


La prueba de Junit de Android falla con "Sólo el subproceso original que creó una jerarquía de vistas puede tocar sus vistas."

Soy muy nuevo en Android y estoy escribiendo algunas pruebas básicas de Android usando Robotium y esto falla con la excepción como

"android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views." 

A continuación se muestra la descripción básica de los cuadros de prueba: –

caso de prueba:-

 public void testSearch() { Activity a = getActivity(); SearchItemActivity search = new SearchItemActivity(solo); search.searchText("ipod", a); } SearchItemActivity.searchText(String) is defined as public void searchText(final String search, Activity act) { Button v = (Button) act .findViewById(com.test.mobile.R.id.text_search_field); ((Button) v).setText(""); ((Button) v).setText(search); solo.sendKey(Solo.ENTER); solo.waitForActivity("FoundItemdDetailActivity"); solo.assertCurrentActivity("Expected FoundItemDetail activity","FoundItemdDetailActivity"); } 

Cualquier sugerencia de cómo puedo modificar mi código será apreciada

  • Puede wifi ser encendido / apagado en caso de prueba a través de robotium
  • Anotaciones de prueba de Android con Robotium
  • Robotium - personalizar la duración PAUSE en la clase Sleeper
  • Excepción de seguridad mientras se prueba wifi en robotium
  • Lento o rápido arrastre hacia arriba (scroll) usando robotium
  • Tiempo de espera de prueba de robotium entre cada clic
  • 2 Solutions collect form web for “La prueba de Junit de Android falla con "Sólo el subproceso original que creó una jerarquía de vistas puede tocar sus vistas."”

     @UiThreadTest public void yourMethod() { 

    La anotación @UiThreadTest indica a Android que construya este método para que se ejecute en el subproceso de la interfaz de usuario. Esto permite que el método cambie el estado del widget spinner en la aplicación bajo prueba. Este uso de @UiThreadTest muestra que, si es necesario, puede ejecutar un método completo en el subproceso de UI.

    http://developer.android.com/tools/testing/activity_test.html

    Supongo que está tratando de actualizar la interfaz de usuario desde un subproceso no UI. Así que para eso debes poner tu código dentro del runOnUiThread() .

     ActivityName.this.runOnUiThread(new Runnable() { public void run() { // your code to update the UI } }); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.