Cod*_*ice 129 android gradle build.gradle android-uiautomator testing-support-library
显然我需要正确的导入语句来解决这个问题.根据文档AndroidJUnit4,这应该是
import android.support.test.runner.AndroidJUnit4;
Run Code Online (Sandbox Code Playgroud)
当我这样做时,Android Studio突出显示runner为红色并抱怨"无法解析符号'跑步者'".
背景
我遵循Android开发者网站上的教程,使用UI Automator设置测试,从而达到了这一点.我遇到的第一个问题是,com.android.support:support-v4:22.2.0并com.android.support.test:runner:0.2依赖于不同的版本com.android.support:support-annotations.我按照Android漏洞报告的建议,allprojects在我的项目中添加了以下内容build.gradle:
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}
Run Code Online (Sandbox Code Playgroud)
这解决了即时错误,但我怀疑它导致了我当前的问题.有没有人有任何关于如何解决这个问题的建议?
从`./gradlew:app:dependencies中重新发布部分
androidTestCompile - Classpath for compiling the androidTest sources.
+--- com.jayway.android.robotium:robotium-solo:5.2.1
+--- com.squareup:fest-android:1.0.8
| \--- org.easytesting:fest-assert-core:2.0M10
| \--- org.easytesting:fest-util:1.2.5
+--- com.android.support.test:runner:0.2
| +--- junit:junit-dep:4.10
| | \--- org.hamcrest:hamcrest-core:1.1
| +--- com.android.support.test:exposed-instrumentation-api-publish:0.2
| \--- com.android.support:support-annotations:22.0.0 -> 22.2.0
+--- com.android.support.test:rules:0.2
| \--- com.android.support.test:runner:0.2 (*)
\--- com.android.support.test.uiautomator:uiautomator-v18:2.1.0
compile - Classpath for compiling the main sources.
+--- com.android.support:appcompat-v7:22.2.0
| \--- com.android.support:support-v4:22.2.0
| \--- com.android.support:support-annotations:22.2.0
+--- com.android.support:support-v4:22.2.0 (*)
+--- com.google.android.gms:play-services:6.1.71
| \--- com.android.support:support-v4:20.0.0 -> 22.2.0 (*)
+--- com.crashlytics.android:crashlytics:1.+ -> 1.1.13
\--- com.jakewharton:butterknife:5.1.2
Run Code Online (Sandbox Code Playgroud)
ori*_*ium 184
确保您的应用程序处于调试构建版本中.转到Build> Select Build Variant ...并显示以下内容:
Sep*_*ozi 65
好的,这是你的错误,我的!
如果我们要为本地单元测试编写一些代码,我们不应该使用@RunWith(AndroidJUnit4.class)因为我们不使用AndroidJUnit4但我们需要Junit4.所以我们应该写@RunWith(JUnit4.class).当然,您的java测试文件位于app/src/test/java/your.package.name目录下.
如果(!!)我们想要编写一些Android Instrumented Unit Test,我们应该将我们的测试java文件放在app/src/androidTest/java/your.package.name目录中并使用注释之类的@RunWith(AndroidJUnit4.class)
Cod*_*ice 32
更新
Android Test Library现在是AndroidX的一部分.请务必使用官方文档中的正确Gradle依赖项.
原始答案
我发现这里有比我使用的更新版本的测试支持库:
dependencies {
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
}
Run Code Online (Sandbox Code Playgroud)
注意:请务必使用这些库的最新版本.这个问题是从Android测试支持库是新的,这里的版本号已经过时了.
ste*_*sen 23
我通过在app的build.gradle文件中进行一些小改动来解决问题.在该dependencies { ... }部分中,请确保包含以下行:
debugImplementation 'com.android.support.test:runner:1.0.1'
Run Code Online (Sandbox Code Playgroud)
或者当时最新的版本(...Compile已弃用且已被替换...Implementation).注意使用debugImplementation.Android Studio建议自动包含它androidTestImplementation,但没有用.
我通过查看app模块的Dependencies下的Project Structure,找到了如何将它从测试更改为调试,您可以在其中更改每个依赖项的范围,请参阅下文.
Zai*_*ain 15
此问题的常见原因是在添加以下依赖项时:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Run Code Online (Sandbox Code Playgroud)
如果您要使用插桩测试(androidTestjava 包中的测试),这是一个正确的依赖项
但是为了test在使用上述依赖项时实现本地单元测试(java 包中的测试);那么你将面临Cannot resolve symbol 'AndroidJUnit4'
这是因为androidTestImplementation指令用于在插桩测试中导入库,而不是在本地 JVM/单元测试中。
如果要AndroidJUnit4在本地 JVM/单元测试中使用,请改用以下依赖项
testImplementation 'androidx.test.ext:junit:1.1.1'
Run Code Online (Sandbox Code Playgroud)
如果AndroidJUnit4在仪器测试中使用时添加后一个依赖项,同样适用,您还将获得Cannot resolve symbol 'AndroidJUnit4'; 因为你使用了错误的指令。
如果仍然有此问题:
无法解析符号“ AndroidJUnit4”
并使用API 27(在build.gradleapp模块中的)中添加以下几行:
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'
Run Code Online (Sandbox Code Playgroud)
请注意,此OP现已发布于2019年,已有4年的历史,因此,如果您使用的是Android X,则不AndroidJUnit4.class推荐使用该操作,并且在此还有一个错误androidx.test.ext.junit.runners.AndroidJUnit4。我建议阅读此链接以解决问题。
不推荐使用AndroidJUnit4.class:如何使用androidx.test.ext.junit.runners.AndroidJUnit4?
将Junit4测试迁移到androidx:是什么原因导致“无法加载委托人”? 对我来说,Android Studio建议替换
@RunWith(AndroidJUnit4.class)
Run Code Online (Sandbox Code Playgroud)
已弃用
@RunWith(AndroidJUnit4ClassRunner.class)
Run Code Online (Sandbox Code Playgroud)
和这个
androidx.test.ext.junit.runners.AndroidJUnit4
Run Code Online (Sandbox Code Playgroud)
有了这个
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
Run Code Online (Sandbox Code Playgroud)
之后,错误消失了,但我不知道将来运行时是否进行测试?
| 归档时间: |
|
| 查看次数: |
57370 次 |
| 最近记录: |