2013-05-22 80 views
31

目前還沒有任何約定,但是如何構造Android Studio的測試目錄,現在Android testing fundamentals頁面上陳述的內容有所不同?如何在Android Studio中構建項目測試目錄?

特別是關於如何讓jUnit在Android Studio上測試和運行的指針會很有幫助,謝謝。

此外,使用android工具現在沒有什麼幫助,因爲Android Studio有些不同。

更新:

我試圖建立測試文件夾,並運行它,但所有我得到如下:

Running tests 
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner} 
Empty test suite. 

我也嘗試添加一個標準AndroidManifest。在那裏進行測試的xml文件。

回答

59

UPDATE

從生成工具19.1.0,並建立插件0.11.0的build.gradle文件開始需要有testPackageName更名爲testApplicationId(也的packageName應更名爲androidId

作爲build插件0.9.0 instrumentTest文件夾更名爲androidTest。這就是我們測試所需要的。

這裏是舉例0.11 + DSL

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
     androidId "org.homelab.lab" 
     testApplicationId "org.homelab.lab.test" 
     testInstrumentationRunner "org.homelab.lab.test.Runner" 
    } 

    ... 
} 

陷阱:如果您的構建文件由testPackageNametestInstrumentationRunner的定義,刪除它們

爲0.5.0版本 - 0.8。+

Android Stud io使用遵循Gradle SourceDir原則的Gradle插件版本0.5。+。

Android Studio project structure

如何使其工作:
1.update SDK
2.安裝或更新搖籃到1.6(報道了1.7的問題),或者與包裝的gradle
3.不要使用貼Android Studio中運行任務的儀器,使用gradle這個命令

gradle connectedCheck 

4.don't使用相同的封裝測試和主APK
5。使用瀏覽器

<project>/build/reports/instrumentTests/index.html 

陷阱檢查結果:
如果測試包,主包是一樣的,可能創建空的TestSuite。結果是誤導,因爲Gradle報告沒有問題,但報告顯示沒有Class已經過測試。

編輯:

下面的build.gradle的一部分配置所需的儀器測試之前0.9.0:

android { 
    compileSdkVersion 14 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 17 
     testPackageName "org.homelab.lab.test" 
     testInstrumentationRunner "org.homelab.lab.test.Runner" 
    } 

    ... 
} 

例如項目https://github.com/swavkulinski/android-studio-instrumentation-test

+1

感謝您的回答。我現在終於回到Eclipse了,因爲我幾乎是初學Android的測試人員。我相信Google會讓事情更輕鬆,因爲他們在未來的迭代中更新Android Studio –

+0

是的,這是早期預覽。現在使用JetGradle使用vanilla IntelliJ來做同樣的事情更容易。出於某種原因,我無法在Android Studio中找到JetGradle。 – robotoaster

+0

@robotoaster:我們是否應該更新build.gradle來指定測試的位置? – dannyroa

0

我有另一種方式來解決這個問題,如果你的原因只是運行配置的問題。

檢查你的運行配置,如果你的項目的配置是Android的測試,但沒有Android的應用程序,然後你將面臨

"Running tests 
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner} 
Empty test suite." 

所以刪除了Android測試配置和添加一個Android應用程序運行配置爲您peoject ,你可以運行它。

1

現在,在Android Studio中,您只需按照將測試置於instrumentDirectory中的約定即可設置instrumentTest。搖籃只需要知道你有任何depencies,這在我的情況是Robotium的:

Android Studio Screenshot

dependencies { 
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.0.+' 
} 

當測試完成後,您將在GUI中顯示的結果,所以你不必須使用任何命令行!您還可以右鍵單擊JUnit測試上方的模塊以運行所有JUnit測試。

+1

這是一個移動的目標,您可以添加「now」意味着關於gradle和android gradle插件的版本。 –

+0

,現在文件夾名稱是androidTest –

1

我也遇到過這個問題。 AndroidStudio只建造和安裝的主要應用APK到設備,並與下面的消息失敗的測試:

測試運行startedTest運行失敗:無法找到儀器儀表信息:ComponentInfo {com.example.app.test /android.test.InstrumentationTestRunner}

空的測試套件。

然而,運行connectedCheck Gradle目標是生成並安裝兩個APK併成功執行檢測測試。原來,您可以通過運行installDebugAndroidTest目標,讓Gradle單獨組裝並安裝Instrumentation APK。在運行這個目標之後,AndroidStudio能夠正常運行儀器測試,甚至能夠連接調試器!我猜測你每次更換測試本身時都需要刷新Instrumentation APK,但不是這樣。安裝在設備上

儀表的APK可以通過運行列出: adb shell pm list instrumentation

相關問題