簡體   English   中英

Android Espresso測試授權權限

[英]Android Espresso Testing Grant Permissions

我有一個使用READ_CONTACTS權限的應用程序。 應用程序啟動后立即要求此權限。 我想在使用espresso執行自動測試時自動接受此許可。 我嘗試使用GrantPermissionRule 該規則適用於我需要的所有其他權限,但不適用於READ_CONTACTS。 我也嘗試過使用UiAnimator,但這也沒有用。 我在每次測試開始時都嘗試使用UiAnimator方法,但是直到我手動接受屏幕上顯示的權限后,它才會運行。 我如何才能自動接受此許可?

public static void allowPermissionsIfNeeded()  {
    if (Build.VERSION.SDK_INT >= 23) {
        UiDevice mDevice = UiDevice.getInstance(getInstrumentation());
        UiObject rational = mDevice.findObject(new UiSelector().text("Yes"));
        if (rational.exists()) {
            try {
                rational.click();
            } catch (UiObjectNotFoundException e) {
                Timber.e(e, "There is no permissions dialog to interact with ");
            }
        }
        UiObject allowPermissions = mDevice.findObject(new UiSelector().text("Allow"));
        if (allowPermissions.exists()) {
            try {
                allowPermissions.click();
            } catch (UiObjectNotFoundException e) {
                Timber.e(e, "There is no permissions dialog to interact with ");
            }
        }
    }
}


@Rule
public GrantPermissionRule grantPermissionRule = GrantPermissionRule.grant(
        Manifest.permission.READ_CONTACTS,
        Manifest.permission.CAMERA,
        Manifest.permission.RECORD_AUDIO,
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE);

您可能缺少@Before注釋的方法; 文檔所示

授予請求的權限的靜態工廠方法。

將在使用@Before注釋的任何方法之前授予權限

但在執行任何測試方法之前。

(我必須承認,我也不真正理解那里的“但”)。

暫無
暫無

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

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