我正在使用Xamarin编写我的第一个Android应用程序。我有一个退出按钮,单击该按钮可关闭该应用程序。我想要在Xamarin UITest中进行测试,以验证单击按钮是否可以关闭应用程序。我弄乱了一段时间,终于找到了可以通过测试的东西。
在应用中:
exitButton.Click += (o, e) =>
{
int pid = Android.OS.Process.MyPid();
Android.OS.Process.KillProcess(pid);
};
在UITest中:
[Test]
public void ExitButtonClosesTheScreen()
{
try
{
app.Tap(c => c.Button("exitButton"));
Assert.Fail("App remains open.");
}
catch (System.Exception e)
{
Assert.AreEqual("The underlying connection was closed: The connection was closed unexpectedly.", e.InnerException.InnerException.InnerException.Message);
}
}
现在测试通过了,所以我想我很高兴。我的问题是,这真的是最好的方法吗?还是有我找不到的更好的方法?
编辑:不幸的是,这不是答案。此方法允许测试通过VS,但在App Center中运行时失败。还有另一种方法可以运行此测试吗?还是这是UITest无法测试的?谢谢。
答案 0 :(得分:0)
首先,按照我的要求关闭应用程序的正确代码是使用完成亲和力
在活动中:
this.FinishAffinity();
片段中:
this.Activity.FinishAffinity();
完成此操作后,AppCenter应该能够确定您的应用已关闭。
答案 1 :(得分:0)
前几天,我做了一些类似的简短阅读,并且可以肯定,ActivityManager类将是实现此目的的最佳方法。 https://developer.xamarin.com/api/type/Android.App.ActivityManager/
此类中有一个名为RunningAppProcesses的方法,该方法返回设备上正在运行的应用程序进程的列表-从那里我猜您可以断言您的应用程序进程是否在列表中。
希望这会有所帮助