Gradle Android Studio没有';我不认识浓缩咖啡课

Gradle Android Studio没有';我不认识浓缩咖啡课,gradle,android-studio,android-espresso,Gradle,Android Studio,Android Espresso,我正在用Gradle 1.11运行Android Studio 0.5.0。我正在尝试从安装Espresso library。由于某些原因,AS无法在项目同步后识别浓缩咖啡类。所以每次我尝试导入import static com.google.android.apps.common.testing.ui.espresso.espresso.onView内部androidTest文件夹文件它将其标记为无效 这是我的身材。格雷德尔: apply plugin: 'android' android

我正在用Gradle 1.11运行Android Studio 0.5.0。我正在尝试从安装Espresso library。由于某些原因,AS无法在项目同步后识别浓缩咖啡类。所以每次我尝试导入
import static com.google.android.apps.common.testing.ui.espresso.espresso.onView内部
androidTest
文件夹文件它将其标记为无效

这是我的身材。格雷德尔:

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.2'

    defaultConfig {
        minSdkVersion 14

        targetSdkVersion 19
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    }

    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.squareup.dagger:dagger-compiler:1.2.1'
    compile 'com.squareup.dagger:dagger:1.2.1'

    androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
        exclude group: 'com.squareup.dagger'
    }
}
外部图书馆:


您没有具体说明在哪个源文件中看到错误,但根据我的测试,我认为您试图从一个主要应用程序类(在src/main/java/中)访问Espresso类。如果是这样的话,那就行不通了,因为您已经通过依赖项include包含了Espresso,这使得它只能被您的测试类访问,而测试类必须在src/androidTest/java下。

所以这基本上是Android Studio的一个bug(我猜)

参考:

  • 解决方法(直到修复错误):

    在gradle文件中添加重复提供的依赖项,如下所示:

    dependencies {
        // ...
    
        provided 'com.jakewharton.espresso:espresso:1.1-r2'
        androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
            exclude group: 'com.squareup.dagger'
        }
    }
    

    六个月后,这仍然是一个问题,原始响应者引用的bug已经被重新打开:并被赋予更高的优先级。我还无法让Android Studio识别浓缩咖啡类,使用“提供的”依赖范围对我来说无法解决这个问题。(使用AS 0.8.6和Gradle 0.12.2)

    这个问题让我抓狂。这似乎是Android Studio中的一个已知错误。在我的例子中,在我将父应用程序的构建类型从Release更改为Debug之后,它得到了解决。希望这对其他人有所帮助

    Espresso 2.0 最近,Espresso 2.0发布,使其成为Android支持库的一部分。这是我的

    安装指南 有了这一点,他们也可以。在那里,您可以找到有关从头开始配置或更新现有2.0版浓缩咖啡配置的说明

    其他提示 以上两个链接包含您需要的所有信息。如果没有,我在下面列出了一些常见的错误

    将Android Studio升级至1.0* 从升级android Studio版本开始。您应该能够从稳定构建通道(=默认值)获得至少1.0。因此,只需使用菜单选项Android Studio检查更新…

    要从最新频道获取最新信息,您还可以进入首选项,搜索更新并将频道更改为金丝雀频道

    将Android支持库更新为v11+ Espresso从版本11开始就包含在支持库中,因此您必须至少获得该版本。使用Android SDK管理器检查更新。支持库位于底部的Extras树中

    新的依赖项和命名空间 如果从较旧的espresso版本升级,则必须更新依赖项和名称空间。对于新项目,只需将它们添加到
    build.gradle
    文件中的
    dependencies

    dependencies {
        androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
        androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
    }
    
    由于名称空间已更改,您必须更新所有导入:

    android.support.test.espresso
    
    注意,使用静态导入更容易。例如,一些常用的导入:

    import static android.support.test.espresso.Espresso.onView;
    import static android.support.test.espresso.assertion.ViewAssertions.matches;
    import static android.support.test.espresso.matcher.ViewMatchers.withId;
    import static android.support.test.espresso.matcher.ViewMatchers.withText;
    import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
    
    对于资产,请使用hamcrest,再举一些例子:

    import static org.hamcrest.Matchers.not;
    import static org.hamcrest.Matchers.allOf;
    import static org.hamcrest.Matchers.anyOf;
    import static org.hamcrest.Matchers.containsString;
    import static org.hamcrest.Matchers.startsWith;
    import static org.hamcrest.Matchers.endsWith;
    import static org.hamcrest.Matchers.equalToIgnoringCase;
    import static org.hamcrest.Matchers.equalToIgnoringWhiteSpace;
    
    仪表转轮 需要在defaultConfig中的
    build.gradle
    文件和用于从Android Studio启动测试的运行配置中配置测试运行程序

    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    
    在您的运行配置中,将此用作检测运行程序(仅限完整类名):

    示例测试用例 最后是一个示例测试用例。请注意,
    MainActivity
    是您要测试的活动。测试本身是以测试开始的公共方法,如下面示例中的
    testlistgoesoferthefold

    @LargeTest
    public class HelloWorldEspressoTest extends ActivityInstrumentationTestCase2<MainActivity> {
    
        public HelloWorldEspressoTest() {
                super(MainActivity.class);
            }
    
        @Override
        public void setUp() throws Exception {
            super.setUp();
            getActivity();
        }
    
        public void testListGoesOverTheFold() {
            onView(withText("Hello world")).check(isDisplayed());
        }
    }
    
    @LargeTest
    公共类HelloWorldEspressoTest扩展了ActivityInstrumentationTestCase2{
    公共HelloWorldEspressoTest(){
    超级(MainActivity.class);
    }
    @凌驾
    public void setUp()引发异常{
    super.setUp();
    getActivity();
    }
    public void testlist goesoverthefold(){
    onView(带有文本(“Hello world”))。检查(isDisplayed());
    }
    }
    
    有关编写测试的更多信息,请访问。

    根据 只测试一种生成类型,默认情况下它是调试生成类型

    因此,请检查您是否正在使用debug build variant并重建应用程序。在其他构建类型上,所有androidTest依赖项都将不可见

    如果需要测试当前生成类型,可以执行以下操作:

    安卓{ ... testBuildType“暂存”
    }

    我已经尝试了上面大家猜测的所有解决方案,但仍然得到了类not found错误

    我想出了我的解决办法,它救了我一天。 因此,如果在Studio中打开项目文件夹左侧的“项目”选项卡并检查构建变体,您可以看到,您的项目设置为“单元测试”。您必须将其重新设置为Android Instrumentation Tests,并确保您的test.java文件处于
    **在我的例子中,src\androidTest\java**

    androidstudio 1.5.1没有实现
    onView()
    onData()
    方法。我只是静态导入了Espresso类及其所有方法

    我在下面加了一行,一切都很顺利

    import static android.support.test.espresso.Espresso.*;
    

    您是否将instrumentTest文件夹重命名为androidTest?恕我直言,但我实际上尝试在androidTest文件夹类中访问它。此解决方法非常有用。我用的是r3版本的双倍浓缩咖啡,这个错误仍然存在。此外,无需创建
    androidTest
    文件夹-我创建了
    test/java/…
    ,它就像一个魔咒一样工作;)自从gradle android插件版本1.1以来,aar依赖项不再有效。原因是它不允许提供aar dep
    import static android.support.test.espresso.Espresso.*;