簡體   English   中英

未使用Gradle創建儀器測試

[英]Instrumentation test not creating with Gradle

我剛剛將我的項目轉換為Gradle,並且運行良好。 我正在嘗試向其中添加一些測試。 我遵循了Android Gradle用戶指南來設置帶有測試的build.gradle 這是我的build.gradle

buildscript {
    repositories {
        maven {
            url 'http://repo1.maven.org/maven2'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        testPackageName "com.instrumentTest.java"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('src/instrumentTest')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

我在src/下創建了一個名為com.instrumentTest.java的包,並在其中放入了示例ServiceTest.java類來測試我的Service。 我使用gradle aDT運行測試並得到以下信息:

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':<MyProject>:compileDebugAidl'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
Caused by: com.android.ide.common.internal.LoggedErrorException: Failed to run command:
<some big command>
Error Code:
        1
Output:
        \src\com\instrumentTest\java\MyServiceTest.java:10: syntax error
        \src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "public"
        \src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "public"
        \src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "class"
        \src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "MyServiceTest"
        \src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "extends"
        \src\com\instrumentTest\java\MyServiceTest.java:10: syntax error don't know what to do with "ServiceTestCase<MyService>"

它輸出syntax error don't know what to do with示例測試類中的每一行代碼。 不太確定發生了什么。 設置所有這些的文檔非常模糊。

我也不確定基於運行gradle tasks的描述, assembleDebugTestconnectedInstrumentTestinstallDebugTest之間的區別。 為了讓Gradle可以看到測試,我需要對清單做些什么嗎? 我應該在完全不同的項目中創建測試嗎? 我讀到以前人們會創建單獨的測試項目,但是由於我在build.gradle文件中設置了instrumentTest的根目錄,因此我想現在可以從一個項目中完成所有工作了?

在build.gradle中,您聲明了InstrumentTest文件夾位於src / instrumentTest中 ,這意味着,如果您在com.instrumentTest包中包含一個內部測試,則該測試應該位於src / instrumentTest / com / instrumentTest / MyServiceTest中 相反,您將文件放在src / com / instrumentTest / java / MyServiceTest

由於某種原因,我不太了解它正在嘗試使用AIDL編譯器進行編譯,而您的Java文件不是有效的AIDL。 如果將其移動到InstrumentTest期望的目錄中,則應該可以編譯。

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Android-tasks上有有關Gradle任務的說明。

  • assembleDebugTest-組裝項目輸出的任務
  • connectedInstrumentTest-運行需要已連接設備或仿真器的檢查。 它們將在所有連接的設備上並行運行。
  • installDebugTest-在連接的設備或模擬器上安裝測試APK

如果您不想弄亂gradle文件,可以改用此方法: http ://rexstjohn.com/unit-testing-with-android-studio/

基本上,您可以設置並運行Android測試配置,該配置可以運行模塊中特定包,類或方法中的所有測試。 因此,您可以在任何地方設置測試類。 它將選擇測試類,而無需修改build.gradle文件和運行命令。 這也回答了您的最后一個問題,它可能全部來自一個項目。

我剛開始使用Android Studio和Gradle,但直到我嘗試了上述方法后,才能一開始就無法正常運行測試。 我發現僅僅為了建立一個簡單的測試而不得不修改build.gradle文件就很奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM