0

我正在为我的 Xamarin.Forms 应用程序编写 Xamarin.UI 测试。我想知道是否可以通过测试来模拟来自 MessagingCenter 的消息?或者可能发送一个将被 Android 应用程序捕获的 Intent?

我想模拟来自某些硬件的输入/输出,这些硬件正在与我的应用程序内的 MessagingCenter 通信它的状态。

如果有人遇到过类似情况或确定不可能这样做,如果他们分享他们的经验,我会很高兴。

非常感谢 :)

4

1 回答 1

0

所以,我设法实现的是我一直在寻找一个我直到现在才知道的整洁的东西 ->后门方法

我在我的 MainActivity.cs 中添加了一个后门方法,它从 UITests 接收硬件状态,然后通过 MessagingCenter 将其发送到我的 Forms 应用程序。

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");
}
于 2019-08-14T08:12:54.553 回答