0

我想對我的lib執行JUnit測試,並希望在測試開始前要求用戶授予所有必需的權限(因爲我需要在自動化過程中從設備存儲中讀取一些文件測試例如)。如何在Android Marshmallow上請求JUnit測試權限

我知道如何通過將任務添加到gradle並從cmd運行它,它運行良好。但是當我使用IDE運行我的測試時,我需要詢問用戶(或自動執行)。

我試着向測試應用程序的MainActivity.onCreate()添加權限請求,但沒有運氣,因爲MainActivity不是爲所有測試啓動的。

有沒有人有任何想法?

此外,請不要談論添加gradle授權任務到執行配置。它工作但無法使用,需要更統一的東西。

+0

試試這個可能是工作原理stackoverflow.com/a/41221852/5488468 –

+0

對不起,這不是我的問題。我的問題是關於JUnit測試 – pbelov

+0

你好pbelov, 我面臨同樣的問題。你解決了這個問題嗎?如果是的話如何? – TKumar

回答

2

我找到了解決我的問題的方法。這是很容易:

需要在應用程序級的創建一個新的任務build.gradle文件是這樣的:

android.applicationVariants.all { variant -> 
    def applicationId = variant.applicationId 
    def adb = android.getAdbExe().toString() 
    def variantName = variant.name.capitalize() 
    def grantPermissionTask = tasks.create("create${variantName}Permissions") << { 
     println "Granting permissions" 
     "${adb} shell pm grant ${applicationId} android.permission.ACCESS_FINE_LOCATION".execute() 
     "${adb} shell pm grant ${applicationId} android.permission.WRITE_EXTERNAL_STORAGE".execute() 
     "${adb} shell pm grant ${applicationId} android.permission.READ_EXTERNAL_STORAGE".execute() 
    } 
} 

然後添加以下的依賴:

preBuild.dependsOn "createDebugPermissions" 

後,所有必需的權限將當你運行任何測試時都會被授予