显然我需要正确的导入语句来解决这个问题.根据文档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 …
Run Code Online (Sandbox Code Playgroud) android gradle build.gradle android-uiautomator testing-support-library
使用Android中的旧JUnit3样式测试,我可以执行以下操作来破坏并重新启动活动:
Instrumentation inst = getInstrumentation();
Activity activity = inst.getActivity();
// do something
activity.finish();
Assert.assertTrue(this.activity.isFinishing());
activity = inst.getActivity();
// assert that activity's state is restored
Run Code Online (Sandbox Code Playgroud)
如何使用新的测试支持库完成同样的事情?我可以使用Espresso和/或UI Automator或新库提供的任何其他机制.
更新:
我尝试了以下方法:
Activity activity = activityTestRule.getActivity();
// do something
activity.finish();
Assert.assertTrue(this.activity.isFinishing());
activity = activityTestRule.getActivity();
// assert that activity's state is restored
Run Code Online (Sandbox Code Playgroud)
但是,似乎ActivityTestRule.getActivity()
不会重新启动活动.
我的GrantPermissionRule 成功地在我的Android应用程序上实现2018年1月3日将不再有效.当我通过Android Studio运行Espresso测试时,模拟器会阻止等待权限.但是,当我从命令行运行测试时,./gradlew dist; ./gradlew connectedDebugAndroidTest --stacktrace
它不会要求权限.注意我在每次运行之前手动擦除模拟器中的数据,以确保它是对GrantPermissionRule的正确测试.
以下是我用于实现GrantPermissionRule的原始引用:https : //www.kotlindevelopment.com/runtime-permissions-espresso-done-right/ https://developer.android.com/reference/android/support/test/rule /GrantPermissionRule.html
app/build.gradle中的版本:
GrantPermissionRule是否已停止为其他人宣传工作?
AndroidJUnit4和参数化测试的答案链接到Google示例以供使用@RunWith(Parameterized.class)
.但是,这是一个简单的单元测试.如何运行参数化检测测试?
testing android junit4 android-instrumentation testing-support-library
我正在将所有测试转换为测试支持库。LargeTest
但是,当我尝试像这样导入注释时
import android.support.test.filters.LargeTest;
Run Code Online (Sandbox Code Playgroud)
我明白了Cannot resolve symbol 'LargeTest'
。我需要将什么依赖项添加到我的 gradle 文件中才能解决此错误?