他的问题是,在添加以下依赖项时: androidTestImplementation 'androidx.test.ext:junit:1.1.1'

他的问题是,在添加以下依赖项时: androidTestImplementation 'androidx.test.ext:junit:1.1.1',android,gradle,build.gradle,android-uiautomator,testing-support-library,Android,Gradle,Build.gradle,Android Uiautomator,Testing Support Library,如果要使用插入指令的测试(在androidTestjava包中的测试),这是一个正确的依赖项 但用于在使用上述依赖关系时实现本地单元测试(在testjava包中的测试);然后您将面临无法解析符号“AndroidJUnit4” 这是因为androidTestImplementation指令用于在插入指令的测试中导入库,而不是在本地JVM/单元测试中 如果您想在本地JVM/单元测试中使用AndroidJUnit4,请改用下面的依赖项 testImplementation 'androidx.test

如果要使用插入指令的测试(在
androidTest
java包中的测试),这是一个正确的依赖项

但用于在使用上述依赖关系时实现本地单元测试(在
test
java包中的测试);然后您将面临
无法解析符号“AndroidJUnit4”

这是因为
androidTestImplementation
指令用于在插入指令的测试中导入库,而不是在本地JVM/单元测试中

如果您想在本地JVM/单元测试中使用
AndroidJUnit4
,请改用下面的依赖项

testImplementation 'androidx.test.ext:junit:1.1.1'

如果在插入指令的测试中使用
AndroidJUnit4
时添加后一个依赖项,则同样适用,您还将得到
无法解析符号“AndroidJUnit4”
;因为您使用了错误的指令。

当我使用Google IOSched应用程序并使用三种生成类型[debug、release、staging]设置项目时,我也发生了相同的错误,其中debug和release共享相同的源目录

sourceSets {
    debug.java.srcDir 'src/debugRelease/java'
    release.java.srcDir 'src/debugRelease/java'
}
在这种情况下,在模块级build.gradle文件中指定
testBuildType
,项目现在应该能够解析符号“AndroidJUnit4”

...
sourceSets {
    debug.java.srcDir 'src/debugRelease/java'
    release.java.srcDir 'src/debugRelease/java'
}

testBuildType "staging"
...
参考资料:

请确保

    androidTestImplementation 'androidx.test.ext:junit:1.1.1'


应用程序build.gradle文件中的依赖项。我错误地删除了它,test停止了编写。

这表明您的构建完全丢失了
com.android.support.test:runner
。您能否通过
gradle dependencies
确认,在
resolutionStrategy
更改后,您仍在使用此功能?@commonware在我的问题中添加了dependencies输出。我不知道
(*)
com.android.support.test:runner:0.2
之后是什么意思。根据,星号“表示依赖关系图的树状视图在此时被截断,因为该部分图已经在前面列出了。”我不明白为什么这对你不起作用。请注意@stemadsen在2018年的答案可能比其他答案更相关。有人曾经写过一篇关于考试的文章,年复一年,题目都是一样的,但是答案却变了……谢谢,你救了我。祝福你。文档从未声明“这些东西只能在调试中工作”。太令人沮丧了。投票结果为100万。这就是我几天来一直在寻找的答案。还发现了这个,因此您可以更改要用于它的生成类型
android{testBuildType“staging”}
我必须向androidstudio工具团队提交一份关于此问题的错误报告。即使是从
debug
继承的构建类型也不起作用,除非显式设置为“debug”。哇,我正在使用带有initWith(buildTypes.debug)的cutsom构建类型,但仍然失败。只有并且只有当我直接使用调试时,它才能工作!在我的例子中,出于某种原因,我的测试文件夹是src/test,然后我不得不将它重命名为src/androidTest,它解决了我的问题,3个小时后……当我写这个问题时,我还没有添加浓缩咖啡作为单元测试的依赖项。+1在我看到这个之前,我实际上已经解决了这个问题,但是是的,这就是我所做的,它解决了我的问题。按照@sepher下面的两个答案。AndroidJunit4类不在浓缩咖啡包中,而存在于android.support.test.runner包中。您所要做的就是包含@Runwith(AndroidJunit4.class)是为src/Androidtest/java中的测试用例编写的,而不是包含在src/test/java下编写的测试用例中。我使用的是Maven,那么呢?@JohnyTex使用Maven不会影响我的答案。这只取决于你的项目文件结构。你能给出一个更完整的解决方案吗。我不理解您所做的事情的背景。当我将构建变量更改为“release”时,在我的浓缩咖啡测试中遇到了“无法解决符号‘AndroidJUnit4’”问题。当我将此语句(testBuildType“release”)添加到应用程序级别build.gradle(摘自)时,此问题就消失了。我格式化了您的答案,并在您的答案中添加了代码。你应该添加更多的细节,比如你评论中的链接,并描述这个块在你的项目中的位置。这已经在接受的答案中说明了。您还应该查看是否有更新的版本并使用它。androidTestCompile与compile相同吗?
compile
指令主应用程序中使用的名称依赖项,而
androidTestComiple
用于测试的名称依赖项。因此,正确的答案是使用
androidTestCompile
,而不是
compile
。我想知道,除非我错过了,否则为什么报告中没有提到这一点。本可以帮我省去一些悲伤。@Karoly我还有问题。您找到解决方案了吗?答案中链接的官方文档没有列出所需的gradle依赖项。幸运的是,迁移到AndroidX工具能够将答案中的依赖项转换为:
依赖项{androidTestImplementation'AndroidX.test.ext:junit:1.1.1'androidTestImplementation'AndroidX.test:rules:1.1.1'androidTestImplementation'AndroidX.test.uiautomator:uiautomator:2.2.0'}
@user2623008这个答案在创建
androidx
名称空间之前就已经写好了。感谢您的更新。请注意,这将把测试支持库编译到APK中。还可以与testImplementation“com.android.support.test:rules:1.0.2”一起使用。您能展示一个示例测试吗?@Code peedient-非常感谢您的编辑,现在好多了如果你想切换正在测试的变量,你建议编辑构建文件吗?嗨,这是一个老问题,已经有了一个可接受的答案,我看不出你的答案如何为这个问题添加任何新的内容。如果您的答案没有在现有答案中添加任何新内容,请避免回答。感谢接受的答案提供了一个链接,可以将测试依赖项更新到AndroidX测试库。这很可能就是你尝试过的所有事情中解决它的原因
debugImplementation 'com.android.support.test:runner:1.0.1'
android {
    ...
    testBuildType "release" 
}
compile com.android.support.test:runner:0.5'
testImplementation 'junit:junit:4.12'

// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'

// Espresso dependencies
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;


import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@RunWith(AndroidJUnit4.class)
@RunWith(AndroidJUnit4ClassRunner.class)
androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
testImplementation 'androidx.test.ext:junit:1.1.1'
sourceSets {
    debug.java.srcDir 'src/debugRelease/java'
    release.java.srcDir 'src/debugRelease/java'
}
...
sourceSets {
    debug.java.srcDir 'src/debugRelease/java'
    release.java.srcDir 'src/debugRelease/java'
}

testBuildType "staging"
...
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'