Можно ли использовать MessagingCenter или Intents с тестами Xamarin.UI?

Я пишу тесты Xamarin.UI для моего приложения Xamarin.Forms. Мне интересно, можно ли смоделировать сообщения из MessagingCenter с помощью тестов? Или, может быть, отправить намерение, которое будет захвачено приложением Android?

Я хотел бы смоделировать входы / выходы от некоторого оборудования, которое сообщает о своем статусе через MessagingCenter внутри моего приложения.

Если кто-то сталкивался с подобной ситуацией или решил, что это невозможно сделать, я был бы рад, если бы они поделились своим опытом.

Большое спасибо:)

1 ответ

Решение

Итак, мне удалось добиться того, что я искал с опрятной вещью, о которой я не знал до сих пор -> Backdoor методы

Я добавил метод backdoor в свой файл MainActivity.cs, который получает состояние оборудования от UITests, а затем отправляет его в мое приложение Forms через MessagingCenter.

Бэкдор метод в MainActivity.cs:

[Export("BackdoorSendStatus")]
public void BackdoorSendStatus(string status)
{
    // In through the backdoor - do some work.
    MessagingCenter.Send(App.Instance, "StatusTopic", status);
}

Тестовый пример, который использует этот метод:

[Test]
public void Test_Backdoor()
{
    App.Invoke("BackdoorSendStatus", "OFFLINE");
    Thread.Sleep(5000);
    App.Invoke("BackdoorSendStatus", "ONLINE");
}
Другие вопросы по тегам