Android Studio无法识别Espresso类

 白纸鹤u8_fw7 发布于 2023-01-19 14:30

我正在Android Studio 0.5.0Gradle 1.11.我正在尝试从com.jakewharton.espresso安装Espresso库 :espresso:1.1-r2.由于某些原因,AS在项目同步后无法识别Espresso类.所以每次我尝试导入的时间import static com.google.android.apps.common.testing.ui.espresso.Espresso.onView;androidTest文件的文件夹它标记为无效.

这是我的build.gradle:

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'
    }
}

外部图书馆:

外部图书馆

3 个回答
  • 浓缩咖啡2.0

    最近发布了Espresso 2.0,使其成为Android支持库的一部分.这是在Android开发博客上宣布的.

    设置指南

    有了这个,他们还链接了更新的设置指南.在那里,您可以找到从头开始配置或更新现有espresso配置2.0的说明.

    其他提示

    变更是以上2个链接包含您需要的所有信息.如果没有,我列出了下面的一些常见错误

    将Android Studio升级到1.0.*

    首先升级你的android Studio版本.您应该能够从稳定构建通道(=默认值)获得至少1.0.因此,只要使用菜单选项的Android工作室 > 检查更新....

    要获得最新信息,您还可以进入"偏好设置",搜索更新并将频道更改为金丝雀频道.

    将Android支持库更新为v 11+

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

    新的依赖项和命名空间

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

    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;
    

    仪表转轮

    需要build.gradle在defaultConfig中的文件和用于从Android Studio启动测试的运行配置中配置测试运行器.

    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    

    在运行配置中,将其用作检测运行器(仅限完整类名):

    android.support.test.runner.AndroidJUnitRunner
    

    示例测试用例

    并以一个示例测试用例来完成.请注意,这MainActivity是您要测试的行为.测试本身是以测试开始的公共方法,testListGoesOverTheFold如下例所示.

    @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());
        }
    }
    

    有关编写测试的更多信息,请访问espresso开始指南.

    2023-01-19 14:33 回答
  • 这个问题让我抓狂.似乎它是Android Studio中的一个已知错误.在我的情况下,它在我将父类应用程序的Build Type从Release更改为Debug后解决了.希望这可能对某人有所帮助

    2023-01-19 14:33 回答
  • 所以这基本上是Android Studio的一个错误(我猜).

    参考:

      adt-dev小组提出的问题

      实际错误 - #66841

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

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

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

    2023-01-19 14:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有