Estoy tratando de agregar loginfacebook para mi aplicación. Pero cuando agregué un repositorio que es necesario para hacer esto. Causó un error. AndroidJUnit4 no puede resolverse ahora.
EjemploPruebaInstrumentada.java
package com.example.user.enyatravelbataan; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import static junit.framework.Assert.assertEquals; import static org.junit.Assert.*; /** * Instrumentation test, which will execute on an Android device. * * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> */ @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); assertEquals("com.example.user.enyatravelbataan", appContext.getPackageName()); } }y esta es mi compilación: gradle (aplicación)
apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.3" useLibrary 'org.apache.http.legacy' repositories { mavenCentral() } defaultConfig { applicationId "com.example.user.enyatravelbataan" minSdkVersion 16 targetSdkVersion 24 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile(name: 'wikitudesdk', ext: 'aar') // compile 'org.apache.httpcomponents:httpclient:4.5' // compile 'org.apache.httpcomponents:httpcore:4.4.1' compile files('libs/MD5Simply.jar') compile files('libs/GenAsync.1.2.jar') compile 'com.facebook.android:facebook-android-sdk:[4,5)' compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:multidex:1.0.0' compile 'com.google.android.gms:play-services:9.8.0' compile 'com.google.android.gms:play-services-location:9.8.0' compile 'com.google.android.gms:play-services-appindexing:9.8.0' compile 'com.android.support:cardview-v7:24.2.1' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.android.support:design:24.2.1' compile 'com.android.volley:volley:1.0.0' compile 'com.android.support:support-v4:24.2.1' testCompile 'junit:junit:4.12' } repositories { flatDir { dirs 'libs' } } apply plugin: 'com.google.gms.google-services'Además de la respuesta anterior, asegúrese de seguir estrictamente estos pasos:
Me golpeaba la cabeza contra la pared y/o cualquier objeto que veía frente a mí para probar mi unidad de función SQLite. No importa lo que haga, cuán estrictamente sigo las sugerencias siempre que mis muchas personas sabias en Internet no funcionen.
Luego tuve que ir al preescolar y empezar de nuevo para darme cuenta de mi estúpido error . Aprendí que AndroidJUnit4 solo se puede usar con Prueba de instrumentación y JUnit se debe usar para pruebas locales. Dicho esto, la carpeta debe ser src/androidTest/java . Tenía mi clase de prueba directamente en la carpeta androidTest, por lo tanto, tuve que enfrentar ese desagradable error. Sin embargo, en el momento en que lo moví bajo src/androidTest/java todo quedó muy claro como " Puedo ver claramente ahora que la lluvia se ha ido ".
Echa un vistazo a este artículo que dice...
Ejecute pruebas unitarias instrumentadas Para ejecutar sus pruebas instrumentadas, siga estos pasos:
Asegúrese de que su proyecto esté sincronizado con Gradle haciendo clic en Sincronizar proyecto en la barra de herramientas. Ejecute su prueba de una de las siguientes maneras: Para ejecutar una sola prueba, abra la ventana Proyecto y luego haga clic con el botón derecho en una prueba y haga clic en Ejecutar. Para probar todos los métodos en una clase, haga clic con el botón derecho en una clase o método en el archivo de prueba y haga clic en Ejecutar. Para ejecutar todas las pruebas en un directorio, haga clic con el botón derecho en el directorio y seleccione Ejecutar pruebas. El complemento de Android para Gradle compila el código de prueba instrumentado ubicado en el directorio predeterminado (src/androidTest/java/), crea un APK de prueba y un APK de producción, instala ambos APK en el dispositivo o emulador conectado y ejecuta las pruebas. Luego, Android Studio muestra los resultados de la ejecución de la prueba instrumentada en la ventana Ejecutar.
Por lo tanto, amigos, para la prueba de instrumentación, la carpeta debe ser (no olvide el caso)
src/prueba de android/java
y para pruebas locales la carpeta debe ser
src/prueba/java
Luego puede hacer que la(s) carpeta(s) de su paquete coincidan con el paquete de su aplicación
¡Espero que esto ayude a la comunidad!
Probar
androidTestImplementation 'com.android.support:support-annotations:23.1.0' androidTestImplementation 'com.android.support.test:runner:0.4.1' androidTestImplementation 'com.android.support.test:rules:0.4.1'Agregue la siguiente sección de dependencias anterior
configurations.all { resolutionStrategy.force 'com.android.support:support-annotations:23.1.0' }Otra cosa importante (que me ha surgido este problema) es verificar si ha cambiado el tipo de compilación para las pruebas ; esa sería la opción testBuildType en el build.gradle de su módulo.
Si lo cambió (como lo hice yo), antes de editar cualquier prueba de Android:
testBuildType testBuildTypePara ejecutar la aplicación normalmente de nuevo, obviamente tendría que volver a "depurar", supongo.
Nota: aunque esto soluciona mi problema principal como se describe en la pregunta aquí, sigo buscando una manera de admitir ambos tipos de compilación personalizados para las pruebas de Android, pero también permitir tipos de compilación de depuración; mi objetivo final es que CI ejecute las pruebas con un tipo de compilación especial, pero que los desarrolladores las ejecuten en modo de "depuración". Entonces, si alguien tiene una idea sobre cómo lograrlo, la sección de comentarios es suya. :)