2013-08-19 27 views
8

我想讓Robolectric與Android Studio一起工作,並且在回顧本[問題] [2]的答案後嘗試使用[gradle-android-test-plugin] [1] ,但我沒有運氣。如何使用gradle-android-test-plugin

  1. 我創建了一個全新的Android項目並將其命名爲MyApp。
  2. 我遵循自述文件「用法」一節中的所有說明。
  3. 我還不有任何代碼在我的新項目進行測試,所以我從
gradle-android-test-plugin/example/src/test/java/com/example 

複製類(包括'RobolectricGradleTestRunner`)和

gradle-android-test-plugin/example/src/main/java/com/example 

目錄到我的新MyApp項目中的相應文件路徑。

我從來沒有實施Android的單元測試,我不知道接下來要做什麼。我成功地在插件的根目錄下運行了./gradlew install,但在我的新項目的根目錄下做同樣的事情卻什麼也沒有完成。它拋出這個投訴:

Task 'install' is ambiguous in root project 'MyApp'. Candidates are: 'installDebug', 'installTest'. 

我一點兒也不熟悉搖籃,這麼短的在搖籃本身讀一本教科書,我不知道如何解決這個問題。

如果我輸入包含AndroidManifest.xml的MyApp的目錄,並嘗試../gradlew clean check構建和運行測試,我得到這個錯誤:

Could not determine the dependencies of task ':MyApp:testDebug'. 

Android Studio中似乎並沒有被發現有任何我的問題依賴。請問有人能指點我的測試方向嗎?我想這是一個簡單的終端命令或插件的自述文件中沒有提到的東西。乾杯!

編輯:

這是我build.gradle。我知道它與插件中包含的示例項目的結構不完全相同,但是該結構給了我相同的錯誤。

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
     classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.+' 
    } 
} 

apply plugin: 'android' 
apply plugin: 'android-test' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.0.1" 

    defaultConfig { 
     minSdkVersion 11 
     targetSdkVersion 18 
    } 
} 

dependencies { 
    compile 'com.android.support:support-v4:18.0.0' 

    testCompile 'junit:junit:4.11' 
    testCompile 'org.robolectric:robolectric:2.1.+' 
    testCompile 'com.squareup:fest-android:1.0.+' 
} 

EDIT2: 除了這個事實,我發出了錯誤的命令(如拉溫德拉的答覆中指出),我還沒有意識到我的搖籃的版本太新(作爲傑克的評論指出)。

+7

RE:無法確定任務的依賴關係 ':MyApp的:testDebug'。 Gradle 1.7尚未支持。 –

+1

...這是你如何使包裝使用1.6:http://www.gradle.org/docs/current/userguide/gradle_wrapper.html,然後運行gradle這個包裝(不./gradlew包裝) – CjS

+0

這個問題是[跟蹤在github](https://github.com/JakeWharton/gradle-android-test-plugin/issues/3)和一個鎖定被很快外出。在閱讀本文時,它可能已經可用。 – gMale

回答

2

沒有安裝任務,但有兩個任務以安裝爲前綴。您必須提供完整的任務名稱或至少足以讓Gradle找出您正在談論的是哪一個(例如,,INSTALLD,ID或完整的東西installDebug將工作)

https://github.com/square/gradle-android-test-plugin/issues/6#issuecomment-22881923

+3

我的'build.gradle'沒有完成嗎?感謝您的幫助,我現在明白'./gradlew install'指的是插件根目錄下的'build.gradle',但「installDebug」是從哪裏來的? 當我嘗試'gradle這個testDebug',我仍然得到熟悉'無法確定任務的「依賴關係:MyApp的:testDebug'.' – artburkart

2

的可用任務列表從主項目文件夾

gradle tasks 

運行測試

gradle tests 
+1

如果我嘗試'gradle tasks'或'gradle test',那麼我得到以下結果: '無法確定任務的依賴關係:'MyApp:testDebug'.' 如果我嘗試'gradle tests',那麼這是我得到什麼: '任務「測試」項目未找到「:MyApp的」。有些考生是:「任務」,「test'.' – artburkart

+0

試圖用你的build.gradle,做工精細的搖​​籃1.6。 – robotoaster

0

從插件的代碼,它好像你應該運行./gradlew test命令要執行

測試
+0

是的,我也在插件的自述文件中看到了這一點。但是**'/ gradlew test' **從根目錄或**'../ gradlew test' **含有'在AndroidManifest.xml'結果目錄: '無法確定任務的依賴性「 :MyApp:testDebug''' – artburkart