是否可以将 MessagingCenter 或 Intents 与 Xamarin.UI 测试一起使用?
Is it possible to use MessagingCenter or Intents with Xamarin.UI tests?
我正在为我的 Xamarin.Forms 应用程序编写 Xamarin.UI 测试。我想知道是否可以通过测试模拟来自 MessagingCenter 的消息?或者可能发送一个将被 Android 应用程序捕获的 Intent?
我想从一些硬件模拟 inputs/outputs,它正在与我的应用程序中的 MessagingCenter 通信它的状态。
如果有谁遇到过类似的情况或者确定不可能做到这一点,我很乐意分享他们的经验。
非常感谢:)
所以,我已经设法实现了我一直在寻找的一个我直到现在才知道的巧妙的东西 -> Backdoor methods
我在我的 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");
}
我正在为我的 Xamarin.Forms 应用程序编写 Xamarin.UI 测试。我想知道是否可以通过测试模拟来自 MessagingCenter 的消息?或者可能发送一个将被 Android 应用程序捕获的 Intent?
我想从一些硬件模拟 inputs/outputs,它正在与我的应用程序中的 MessagingCenter 通信它的状态。
如果有谁遇到过类似的情况或者确定不可能做到这一点,我很乐意分享他们的经验。
非常感谢:)
所以,我已经设法实现了我一直在寻找的一个我直到现在才知道的巧妙的东西 -> Backdoor methods
我在我的 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");
}