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


¿Robolectric soporta el nivel API?

Tengo una prueba que me gustaría ejecutar con Robolectric, yo uso el 2.3-SNAPSHOT como mi APP utiliza el ActionbarCompat i necesario para utilizar 2.3-SNAPSHOT versión como Robolectric no pudo encontrar los temas de AppCompat antes. Así que configuro el Classpath en Eclipse y termino con esto:

java.lang.UnsupportedOperationException: Robolectric does not support API level 9, sorry! at org.robolectric.SdkConfig.<init>(SdkConfig.java:24) at org.robolectric.RobolectricTestRunner.pickSdkVersion(RobolectricTestRunner.java:288) at org.robolectric.RobolectricTestRunner.getEnvironment(RobolectricTestRunner.java:264) at org.robolectric.RobolectricTestRunner.access$100(RobolectricTestRunner.java:57) at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:186) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:172) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

El Manifiesto de mi Proyecto de Prueba es así:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.vendor.test" android:versionCode="1" android:versionName="1.0"> <application> <uses-library android:name="android.test.runner" /> </application> <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.vendor" /> </manifest> 

Me quejo siempre sobre el nivel de API, no importa lo que uso.

Alguien tiene este trabajo?

  • Android Lolipop Appcompat problemas con Robolectric
  • Osx maven running tests Excepción: java.lang.OutOfMemoryError lanzado desde el UncaughtExceptionHandler en el subproceso "main"
  • Estoy estudiando Robolectric pero se ha producido un error
  • ¿Es posible hacer peticiones http reales con robolectric
  • Gradle + Robolectric: ¿Dónde puedo poner el archivo org.robolectric.Config.properties?
  • Roboeléctrico y Android Studio
  • NPE al obtener Robolectric ShadowApplication con Volley y Dagger
  • Prueba de vistas personalizadas con Robolectric
  • 3 Solutions collect form web for “¿Robolectric soporta el nivel API?”

    Actualización: La anotación es ahora @Config(sdk = 18) (o @Config(sdk = Build.VERSION_CODES.JELLY_BEAN_MR2) ) y el archivo de propiedades mencionado en el enlace ahora es robolectric.properties .

    Original Answer: Puede utilizar la anotación @Config para que Robolectric emule una versión de SDK. Usted puede poner esto:

     import org.robolectric.annotation.Config; @Config(emulateSdk = 18) // now @Config(sdk = 18) as of Robolectric 3.0 @RunWith(RobolectricTestRunner.class) public class SomeTest ... 

    Esto también es posible utilizando un archivo como se menciona aquí

    No está seguro de lo que significa para sus pruebas específicas de KitKat, pero al menos las otras deberían funcionar.

    En caso de que la gente como yo, sigue visitando el enlace para el error similar,

    @Config(emulateSdk = ) no funciona ahora. Su cambiado a sdk–
    @Config(constants = BuildConfig.class, sdk=21)

    Para mí, estaba recibiendo error con la versión de destino 22,

     java.lang.UnsupportedOperationException: Robolectric does not support API level 22 

    Y así lo emulaba a 21.

    Según SdkConfig.java , Roboeléctrico sólo admite las siguientes versiones / niveles de API:

     SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN, new SdkVersion("4.1.2_r1", "0")); SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN_MR1, new SdkVersion("4.2.2_r1.2", "0")); SUPPORTED_APIS.put(Build.VERSION_CODES.JELLY_BEAN_MR2, new SdkVersion("4.3_r2", "0")); SUPPORTED_APIS.put(Build.VERSION_CODES.KITKAT, new SdkVersion("4.4_r1", "0")); SUPPORTED_APIS.put(Build.VERSION_CODES.LOLLIPOP, new SdkVersion("5.0.0_r2", "0")); 

    ¿Estás seguro de que lo has probado?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.