Android系统。 @RunWith(AndroidJUnit4.class) - 无法在包中解析" androidTest"

时间:2017-02-22 17:10:32

标签: android unit-testing

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

为什么?

2 个答案:

答案 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框架(因为它在一个运行中)。

由于它们是两个独立的变体,因此您还需要单独声明它们的依赖项。 testCompileandroidTestCompile每个都只将依赖项添加到自己的变体中。要在两者上都有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'

希望这会修复您的代码。