Android Studion 2.2.3
安装Android支持存储库 - ver。 44.0.0
我在Espresso的官方网站上设置了所有内容:
https://google.github.io/android-testing-support-library/docs/espresso/setup/index.html
我尝试在 androidTest 包中编写检测测试(Espresso)。所以我在文件夹src / androidTest / java / com / mycompany /
中创建 StringUtilAndroidTest我的 StringUtilAndroidTest 代码:
@RunWith(AndroidJUnit4.class)
@LargeTest
public class StringUtilAndroidTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class);
@Test
public void myTest() {
assert(true);
}
}
在我的build.gradle中:
android.defaultconfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
我的依赖项:
testCompile 'junit:junit:4.12'
testCompile 'org.hamcrest:hamcrest-library:1.3'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1
但是在 StringUtilAndroidTest 中我收到编译错误:
@RunWith(AndroidJUnit4.class)
无法解析符号RunWith
为什么?
答案 0 :(得分:2)
简短的回答:将此添加到您的依赖项中,您就是金色的。
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
答案很长:
在默认配置中,Android Studio项目有两种不同的测试&#34;变体&#34;:test
&amp; androidTest
。前者使用&#39; src / test / java&#39;和后者&#39; src / androidTest / java&#39; (这是你的情景)。
两者之间存在很大差异:androidTest
需要模拟器或要运行的设备,test
不需要。这意味着test
运行起来要快得多(通常在IDE上几秒钟),但它无法访问Android框架(如活动,上下文等)。另一方面,androidTest
运行需要更长的时间(更不用说模拟器本身的等待时间),但它确实有Android框架(因为它在一个运行中)。
由于它们是两个独立的变体,因此您还需要单独声明它们的依赖项。 testCompile
和androidTestCompile
每个都只将依赖项添加到自己的变体中。要在两者上都有JUnit,你必须声明依赖于两者 - 基本上&#34;重复&#34;这条线。
P.S。:请注意,当您使用compile
时,会将其添加到所有变体中,因此您不必重复非测试依赖项。
答案 1 :(得分:2)
你可能错过了一些依赖。
//App's dependencies, including test
compile 'com.android.support:support-annotations:22.2.0'
// Testing-only dependencies
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
androidTestCompile 'junit:junit:4.12'
testCompile 'junit:junit:4.12'
希望这会修复您的代码。