当前位置: 首页 > 知识库问答 >
问题:

Android Studio中的仪器化测试

孟璞
2023-03-14

我所做的:

>

  • 安装Android测试支持库(Android Support Repository,Rev17)。

    在src中创建一个目录androidTest。添加以“test”结尾的Java文件夹+包。

     @RunWith(AndroidJUnit4.class)
        public class ServerRequestInstrumentationTest {
            @Test
            public void test(){
               LogC.d("Here we go testing !");
            }
        }
    
      null
    @RunWith(Suite.class)
    @Suite.SuiteClasses({ServerRequestInstrumentationTest.class})
    public class TestSuit {
    
        public TestSuit(){}
    }
    
      null
    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 22
        buildToolsVersion "22.0.1"
    
        defaultConfig {
            applicationId "com.mydomain.app"
            minSdkVersion 9
            targetSdkVersion 22
            versionCode 28
            versionName "2.0.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
            compileOptions {
                sourceCompatibility JavaVersion.VERSION_1_7
                targetCompatibility JavaVersion.VERSION_1_7
            }
    
        }
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                lintOptions {
                    disable 'MissingTranslation'
                }
            }
        }
        sourceSets { main { java.srcDirs = ['src/main/java'] } }
    }
    
    dependencies {
        compile 'com.android.support:support-v4:22.2.0'
        compile 'com.android.support:appcompat-v7:22.2.0'
        wearApp project(':wear')
        compile project(':moreapps')
        compile project(':lib_repair')
        compile project(':bugreport')
        //testCompile 'junit:junit:4.12'
        testCompile 'org.mockito:mockito-core:1.10.19'
        androidTestCompile 'junit:junit:4.12'
        androidTestCompile 'org.hamcrest:hamcrest-library:1.1'
        androidTestCompile 'com.android.support.test:runner:0.3'
        androidTestCompile 'com.android.support.test:rules:0.3'
    }
    

    我只是添加了AndroidTestCompile'junit:junit:4.12'行,否则无法识别注释@runwith(AndroidJunit4.class)。现在,当我启动测试时,我得到一个Gradle构建错误。

    错误:任务“:app:DexDebugandroidTest”执行失败。

    com.android.ide.common.Process.processException:org.gradle.Process.internal.execException:Process'command'/usr/lib/jvm/jdkoracle/bin/java''以非零退出值2完成

    谢谢。

  • 共有1个答案

    仲智
    2023-03-14

    好吧,终于管用了。

    稍作搜索后,我发现Gradle控制台输出了一个错误:

    AGPBI: {"kind":"simple","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","sources":[{}]}
    AGPBI: {"kind":"simple","text":"com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/TypeSafeMatcher;","sources":[{}]}
    

    在我修改了gradle构建中的一行之后,gradle构建了项目SuccessFully,并且我能够运行简单的仪器化测试。

    androidTestCompile 'org.hamcrest:hamcrest-library:1.1'
    
    testCompile 'org.hamcrest:hamcrest-library:1.1'
    
     类似资料:
    • Linkerd 提供了通信延迟和有效载荷大小的详细直方图以及成功率和负载均衡统计信息,以人类可读和机器可解析的格式。这意味着即使多语言应用程序也可以具有应用程序性能的一致的,全局的视图。有数百个计数器,仪表和直方图可用,包括: 延迟 (平均, 最小, 最大, p99, p999, p9999) 请求量 有效载荷大小 成功,重试和失败计数 故障分类 堆内存和 GC 性能 负载均衡统计 虽然 link

    • 我目前正在尝试首次在Eclipse中使用调试器,并收到以下错误: 错误消息的图像 我无法使用调试器并导致此错误的原因是什么? 确保javaagent-shaded.jar文件存在 确保路径正确 尝试用sudo启动Eclipse 确保Eclipse可以访问上述路径 在

    • 我继承了一个Android项目来设置代码覆盖率。我没有为Android做太多事情,而且几乎没有什么成绩,我开始寻找一个有用的教程。令人惊讶的是,前几个教程非常有帮助,我能够包含jaco gradle插件并启用代码覆盖率。使用詹金斯,我甚至生成了一份报道报告。到目前为止,一切看起来都很好。 然而,当我看到这份报告时,我闻到了一些可疑的味道。测试与覆盖率的比率似乎太小了。进一步调查发现了罪魁祸首。 测

    • 我有一套安装了仪器的Android测试,在模拟设备上运行。我可以使用<code>gradlew connectedDebugAndroidTest</code>与gradle一起运行它们,并且我已经设置了gradle pitest插件,如下所示: 当我运行 或 时,模拟器不会启动,只有我的单元测试会运行。在最配置中指定经过检测的测试类或指定其他测试运行程序没有帮助。我是Android Studio

    • 我有一个简单的Android项目,它利用了RoboElectric 2和Maven。 我可以通过以下方式很好地运行测试: 但这些测试未能在IntelliJ IDEA内部运行。我在尝试运行IntelliJ IDEA的测试时遇到了这个奇怪的错误 我在IDE中没有发现其他错误,所有东西都可以从IntelliJ中正确编译并部署到设备上。

    • 我想做一个应用程序,使用谷歌翻译API。自从我添加了 我的构建中的依赖项。gradle我有个错误: 现在必须显式声明注释处理器。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到annotationProcessor配置中。-自动值-1.2。jar(com.google.auto.value:auto-value:1.2)或者,设置android。defaultConfig。javaCom