He utilizado con éxito este código para cargar recursos tanto en una aplicación como en sus pruebas unitarias con Robolectric 2.4: getContext().getResources().getIdentifier(resName, "string", getContext().getPackageName()); donde Context sería MyApplication en App y TestMyApplication en pruebas Robolectric. Con Robolectric 3.0 ya no funciona cuando se agrega un archivo applicationIdSuffix al archivo de compilación, la llamada devuelve 0. […]
Estoy tratando de usar el marco Robolectric para crear pruebas de unidad para mis proyectos de Android. Comencé con un proyecto Android vacío creado por el asistente para proyectos eclipse android. En un proyecto de java diferente, utilizo este código para probar una prueba básica: @RunWith(RobolectricTestRunner.class) public class ApiTest { @Before public void setUp() throws […]
Mis pruebas de gradle y robolectric de Android estuvieron funcionando bien hasta que tuve que escribir pruebas de unidad para una clase que usaba JSONException o algo del paquete org.json. apply plugin: 'android' apply plugin: 'com.android.application' apply plugin: 'robolectric' apply plugin: 'crashlytics' apply plugin: 'jacoco' //provides code coverage metrics dependencies { // regular dependences … […]
Estoy tratando de tener una prueba de unidad que comprueba si la actividad lanzada está en la orientación correcta. Por lo tanto, en mi archivo AndroidManifest.xml, tengo la orientación establecida como: <activity android:name="com.xxx.MyActivity" android:screenOrientation="portrait" android:theme="@style/MyTheme" > <meta-data android:name="target_device" android:value="phone" /> </activity> Las pruebas y código probado están en el mismo proyecto, así que supongo que […]
Estoy trabajando en la implementación de pruebas roboeléctricas en ejecución con gradle. Actualmente estoy ejecutando todas las pruebas sin embargo cada vez que intento instanciar una actividad con Robolectric.buildActivity(ClassName.class).create().get(); Editar: el mismo error se genera con HelloWorld activity = new HelloWorld (); Voy a obtener el siguiente error: java.lang.RuntimeException: java.lang.RuntimeException: .\res\values is not a directory […]
Así es como se ve mi método de prueba: @RunWith(RobolectricTestRunner.class) public class TestMyApplication{ private About aboutActivity; @Test public void AboutActivityTest() throws Exception{ aboutActivity = new About(); aboutActivity.onCreate(null); TextView aboutInfo = (TextView) sobreActivity.findViewById(R.id.text_version); assertThat(sobreInfo.getText().toString(), equalTo("My Application v1.0")); } } La línea aboutActivity.onCreate (null); Arroja la siguiente excepción cuando ejecuto esta prueba java.lang.RuntimeException: error inflating layout/about at […]
Esta pregunta SO es muy similar a lo que quiero hacer: ¿Cómo puedo sombra de la PackageManager con Robolectric Sin embargo, todas las respuestas dependen de ShadowApplication.setPackageManager (). En 2.2, este método ya no parece existir: http://robolectric.org/javadoc/org/robolectric/shadows/ShadowApplication.html Intenté agarrar simplemente el encargado del paquete y agregar una información de la resolución: RobolectricPackageManager packageManager = (RobolectricPackageManager) […]
Estoy iniciando las pruebas de unidad con Robolectric. Tengo un botón que cuando chasqueé aparecerá un diálogo de la confirmación al usuario. Cuando el usuario hace clic en BUTTON_POSITIVE , se BUTTON_POSITIVE una nueva actividad, un clic en BUTTON_NEGATIVE, no pasa nada, el usuario permanece en la actividad actual. Para el caso de uso BUTTON_POSITIVE, […]
Actualmente he heredado una aplicación de Android que tiene cobertura de código cero en ella y mi primer trabajo es obtener algunas pruebas de unidad escritas para ello. Así que he decidido también utilizarlo como una oportunidad para aprender Robolectric. Sin embargo estoy golpeando las ediciones iniciales que consiguen dos pruebas simuladas simples para funcionar. […]
Estoy tratando de modificar el valor devuelto por System.currentTimeMillis () para que pueda hacer operaciones como: escribir algo en la base de datos, simular la espera de 5 minutos, hacer una consulta en la base de datos (la consulta depende de cuando se escribe el valor ). El código sugerido en [este subproceso de SO]: […]