Можно ли использовать 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");
}