Как отключить расположение в Xamarin.Forms UI Test - PullRequest
0 голосов
/ 08 сентября 2018

Как отключить определение местоположения во время одиночного теста пользовательского интерфейса в формах xamarin (я использую симулятор Android 8.1)? В одном тестовом примере я хочу отменить разрешение на определение местоположения, а в другом симулировать, что GPS не может найти местоположение пользователя. Я думал о backdors, но я не нашел ничего полезного или актуального в msdn и стеке (некоторые ссылки вставлены ниже).

Я пробовал что-то вроде этого (и гораздо больше похожих «мутаций»):

Droid.MainActivity:

[Export("GpsBackdoor")]
    public void GpsBackdoor()
    {
        Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
        intent.PutExtra("enabled", Java.Lang.Boolean.False);
        SendBroadcast(intent);
    }

UITests.Test:

[Test]
    public void SetCurrentUserLocation_WhenGPSisOff_ShouldShowAlert()
    {
        app.WaitForElement(x => x.Text("Nearest stops"));
        app.Invoke("GpsBackdoor");
        app.Tap(x => x.Text("Nearest stops"));

        var result = app.WaitForElement("Could not obtain position");
    }

После выполнения теста я получаю сообщение:

System.Exception : Error while performing Invoke("GpsBackdoor", null)
----> System.Net.Http.HttpRequestException : An error occurred while sending 
the request.
----> System.Net.WebException : The underlying connection was closed: The 
connection was closed unexpectedly.
at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args,  
String memberName)
at Xamarin.UITest.Android.AndroidApp.Invoke(String methodName, Object 
argument)
at BusMap.Mobile.UITests.NearestStopsMapPageTests.
SetCurrentUserLocation_WhenGPSisOff_ShouldShowAlert() in 
<source>\NearestStopsMapPageTests.cs:line 40
--HttpRequestException
at Xamarin.UITest.Shared.Http.HttpClient.SendData(String endpoint, String 
method, HttpContent content, ExceptionPolicy exceptionPolicy, Nullable`1 
timeOut)
at Xamarin.UITest.Shared.Http.HttpClient.Post(String endpoint, String 
arguments, ExceptionPolicy exceptionPolicy, Nullable`1 timeOut)
at Xamarin.UITest.Android.AndroidGestures.Invoke(String methodName, Object[] 
arguments)
at Xamarin.UITest.Utils.ErrorReporting.With[T](Func`1 func, Object[] args, 
String memberName)
--WebException
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)

Я также пытался отключить Wi-Fi или сотовые данные, что выдало мне ту же ошибку.

Буду благодарен за любую помощь.

P.S. Некоторые ссылки, которые я нашел:

Включить / отключить Wi-Fi с помощью Xamarin UiTest

Как программно запускать и выключать GPS в Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...