我正在尝试为我的应用添加loginfacebook。但是当我添加一个需要这样做的存储库时。它导致了一个错误。 AndroidJUnit4现在无法解决。
ExampleInstrumentedTest.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());
}
}
这是我的构建:gradle(app)
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'
答案 0 :(得分:8)
尝试
androidTestCompile 'com.android.support:support-annotations:23.1.0'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'
添加以下依赖关系部分
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.1.0'
}
答案 1 :(得分:7)
除上述答案外,请确保严格按照以下步骤操作:
为了让我的SQLite功能单元经过测试,我正撞在墙上和/或我面前看到的任何物体上。无论我做什么,如何严格遵循建议,我在网上的许多聪明人都没有工作。
然后我不得不去学前班并重新开始实现我的愚蠢错误。我了解到AndroidJUnit4只能用于Instrumentation Test,而JUnit必须用于本地测试。话虽这么说,文件夹必须是 src / androidTest / java 。我的测试类直接在androidTest文件夹下,因此我不得不面对那个讨厌的错误。然而,当我把它移到 src / androidTest / java 之下的那一刻,一切都非常清楚,就像“我现在可以清楚地看到雨已经消失了”。
Take a look at this article ,其中说......
运行检测单元测试要运行检测测试,请按照 这些步骤:
单击同步,确保您的项目与Gradle同步 工具栏中的项目。通过以下方式之一运行测试: 要运行单个测试,请打开“项目”窗口,然后右键单击a 单击测试并单击运行。要测试类中的所有方法,请右键单击a 测试文件中的类或方法,然后单击“运行”。在a中运行所有测试 在目录中,右键单击该目录并选择Run tests。该 Gradle的Android插件编译位于的检测测试代码 在默认目录(src / androidTest / java /)中,构建一个测试APK 和生产APK,在连接的设备上安装两个APK或 模拟器,并运行测试。然后,Android Studio会显示结果 在“运行”窗口中执行检测的测试执行。
因此,对于仪器测试文件夹必须(不要忘记案例)
的src / androidTest / JAVA
和本地测试文件夹必须
的src /测试/ JAVA
然后,您可以让您的包文件夹与您的应用包匹配
希望,这对社区有帮助!
答案 2 :(得分:2)
另一个重要的事情(已经为我提出这个问题)是检查你是否更改了测试的构建类型 - 这将是模块中的testBuildType
选项{{ 1}}。
如果您确实更改了它(就像我一样),那么在编辑任何Android测试之前:
build.gradle
Gradle属性要再次正常运行应用程序,您显然需要切换回“调试”我想。
注意:即使这解决了我在这里提出的问题所描述的核心问题,我仍然在寻找一种方法来支持Android测试的自定义构建类型,但也允许调试构建类型;我的最终目标是让CI运行具有特殊构建类型的测试,但让开发人员以“调试”模式运行它们。因此,如果有人知道如何实现这一点,评论部分就是你的。 :)
答案 3 :(得分:0)
只需将compile "com.android.support.test:runner:1.0.1"
添加到您的Gradle。
答案 4 :(得分:0)
对我来说,这是因为某些androidTestImplementation
导入在 build.gradle 中不是最新的。在我将所有更新到最新版本后,错误消失了。
注意:
我的项目有多个模块,我必须在每个模块中更新它们。
答案 5 :(得分:0)
请尝试使用最新的API,如下所示
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-ore:3.0.2'
仍然,没有运气,然后尝试“实现”而不是testImplementation,androidTestImplementation和androidTestImplementation并在Gradle中进行同步。
答案 6 :(得分:0)
最适合我的解决方案是更改模拟器(使用您正在使用的api的模拟器) 为此,请点击“运行”按钮旁边的Emulatr符号(例如:Pixel 2) 然后进入“打开AVD管理器”(添加您需要的API(例如API 29)) 就这样
答案 7 :(得分:0)
import androidx.test.runner.AndroidJUnit4
代替
import android.support.test.runner.AndroidJUnit4
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
代替
Context appContext = InstrumentationRegistry.getTargetContext()