为什么库模块android.support.test在添加依赖项中不可见

时间:2015-04-16 23:51:45

标签: java android android-studio

我将Espresso添加到Android Studio中的项目中。我已经安装了支持存储库,实际上已经使用了它的部分。然后我根据安装说明将这些依赖项添加到app/build.gradle

androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'

在编写我的测试时,auto complete会识别出工件的存在。但是当我跑步时我得到了这个错误:

error: package android.support.test does not exist
error: package org.junit does not exist

以及这两个的其他一些子包。

所以我从build.gradle中删除了上面的两行,然后尝试在GUI项目结构/ modules / dependencies中添加

既没有&#39; com.android.support.test.espresso:espresso-core:2.0&#39; nor&#39; com.android.support.test:testing-support-lib:0.1&#39;显示为可供选择的选项。但是,在我的文件系统中,<sdk>\extras\android\m2repository\com\android\support\test\espresso\espresso-core\2.0\包含espresso-core-2.0.aar的完整文件,我可以通过winzip打开并在其中导航。在文件系统中,它看起来与通过SDK Manager和Support Repository安装的其他库没什么区别。

为什么android studio不识别这个库?

非常感谢您的帮助,我找不到任何其他人似乎遇到了这个问题。这是我能找到的最接近的地方:Why do packages from library module does not exist upon compilation, even when Android Studio shows no errors in code?

我尝试过两次重新安装支持信息库。

7 个答案:

答案 0 :(得分:35)

我遇到了同样的问题,我发现androidTestCompile的依赖关系只在调试版本变体中默认可见。

您可以通过将其添加到build.gradle来更改要测试的构建变体:

android {
    ...
    testBuildType "staging"
}

其中“staging”只是一个示例,您应该使用其中一个构建变体替换它。

请记住,只测试了一种变体。

此处提供更多信息https://code.google.com/p/android/issues/detail?id=98326

答案 1 :(得分:13)

我也遇到过这个问题,我在Google推荐的src / androidTests下安装了我的android测试用例,但这会导致build.gradle出现问题:

sourceSets {
    main {
        java.srcDirs = ['src']
    }
}

有了上述内容,它试图在正常的 debug 编译目标中编译我的所有测试用例,该目标不包括espresso和其他依赖项,因为它们列在<< EM> androidTestCompile

最后,我通过从编译中排除androidTest子目录来修复此问题,并将androidTest的根目录设置为适当的目录。

sourceSets {
    main {
        java.srcDirs = ['src']
        java.excludes = ['androidTest/**']
    }
    androidTest.setRoot('src/androidTest')
}

答案 2 :(得分:12)

有两种不同的测试依赖项配置:

  • testCompile - 由单元测试套件使用(位于src/test文件夹中,由./gradlew test调用)
  • androidTestCompile - 由集成测试套件(位于src/androidTest文件夹并由./gradlew connectedAndroidTest调用)使用。

我怀疑你的测试代码位于错误的测试套件位置

在您的情况下,您的测试代码应该进入src/androidTest文件夹,并且应该通过运行./gradlew connectedAndroidTest执行测试套件

答案 3 :(得分:10)

我遇到了同样的问题,它是通过从Android Studio的Build选项卡中点击Clean Project来解决的。

点击清洁项目后,观察Gradle控制台是否存在潜在错误,如果成功完成清洁,只需进入任何一个测试类并输入&#34; Espresso&#34;智能代码完成应提供建议。在此之后,当您使用Espresso时,所有内容都应自动导入。

希望这有帮助!

答案 4 :(得分:3)

我的解决方案更简单,更简单,我只是去了Android Studio File>Invalidate Caches/Restart并且它运行正常,似乎android studio保留了一些不会用Rebuild/Clean清理的缓存。

答案 5 :(得分:0)

我在将我的某个应用转发到新的视觉范例时遇到了这个问题,并发现我的应用级build.gradle缺少以下内容:

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

答案 6 :(得分:0)

1.单击工具栏中“运行”按钮旁边的下拉菜单。

2.单击编辑配置

3.现在删除除app(在Android App中)和默认值之外的所有其他内容。

这对我有用。希望它有所帮助。