我在Android Studio的AndroidTests目錄下有一些安裝了Android的測試工具。當然,我可以手動執行測試,但是我需要在每次構建之後執行套件中的所有測試(「發佈」類型的構建,而不是在正常的調試構建過程中)。我需要這樣做,因爲我想在發佈新應用的apk之前驗證新代碼對測試。怎麼做?我谷歌它,但我沒有找到一個合適的解決方案呢。如何在每次「發佈」構建之前使用gradle執行Android測試?
有什麼想法?
我在Android Studio的AndroidTests目錄下有一些安裝了Android的測試工具。當然,我可以手動執行測試,但是我需要在每次構建之後執行套件中的所有測試(「發佈」類型的構建,而不是在正常的調試構建過程中)。我需要這樣做,因爲我想在發佈新應用的apk之前驗證新代碼對測試。怎麼做?我谷歌它,但我沒有找到一個合適的解決方案呢。如何在每次「發佈」構建之前使用gradle執行Android測試?
有什麼想法?
最後我設法做到了。我已經添加了以下配置我的build.gradle文件在我的Android Studio項目:
// execute android tests before realising a new apk
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease')
task.dependsOn('connectedAndroidTest')
}
android {
signingConfigs {
release {
keyAlias 'key'
keyPassword 'password'
storeFile file('/path/to/release_keystore.jks')
storePassword 'password'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
這樣做,我可以建立一個發佈APK時運行所有Android測試後。如果測試失敗,則不會構建apk。
我想你應該潛入一個特定的主題:Continuous Integration
。
這將允許您在每次構建或提交之後運行測試套件,構建變體,在Google Play上發佈以及更多...從經典Jenkins CI
開始,這可能不是最精緻和易於使用的,我的意思是用戶友好的工具,但與Travis
或Circle CI
相比,它提供了巨大的配置可能性,良好的應用程序社區和免費使用。
開始這篇文章:http://www.vogella.com/tutorials/Jenkins/article.html
其他工具:我已經使用Travis
我Github
項目,但Circle CI
或Green House CI
可能也是不錯的選擇。
希望這將有助於
一般來說,你可以定義一個依賴使用dependsOn
法的任務。
例如:
task A << {
println 'Hello from A'
}
task B << {
println 'Hello from B'
}
B.dependsOn A
您將獲得
> gradle -q B
Hello from A
Hello from B
在你的情況,你可以指定:
assemble.dependsOn test
如果您想僅指定發佈的依賴打造:
assembleRelease.dependsOn test
使用:
connectedAndroidTest
上運行連接的仿真器或裝置中的測試。
test
在本地主機上運行單元測試。
yeahh我認爲這樣的東西,但什麼是「測試」?不被gradle識別。我需要在某處指定它嗎? – Daniele
@Daniele使用試驗運行單元測試或connectedAndroidTest運行機器人測試 –
確定我加入此:tasks.whenTaskAdded {任務 - > 如果(task.name ==「assembleRelease」) task.dependsOn(「connectedAndroidTest」 ) }現在它似乎工作,但問題是沒有測試執行死於簽名證書問題。問題是connectedAndroidTest針對「構建」類型而不是「發佈」類型的構建運行測試。在這裏找到更多的信息:http://stackoverflow.com/questions/23923218/android-gradle-running-tests-on-non-debug-builds。不清楚現在該做什麼。 – Daniele
是的你是對的,但我現在不需要,因爲我只是開發一個簡單的應用程序。我現在不需要CI,我只是一個獨立開發者。無論如何感謝參考,但我正在尋找不同的東西,我想我問的東西應該有一個簡單的答案,但也許不是。 :-) – Daniele
詹金斯是一個偉大的開源工具,如果你願意改變一份工作,那麼他的技能很棒。我已經是特拉維斯用於我的非常小的項目,檢查我的github,尼克是一樣的我的用戶名 – piotrek1543