如何测试Xamarin Android应用程序是否关闭

时间:2018-09-21 01:01:17

标签: xamarin.android xamarin.uitest

我正在使用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无法测试的?谢谢。

2 个答案:

答案 0 :(得分:0)

首先,按照我的要求关闭应用程序的正确代码是使用完成亲和力

在活动中:

this.FinishAffinity(); 

片段中:

this.Activity.FinishAffinity();

完成此操作后,AppCenter应该能够确定您的应用已关闭。

答案 1 :(得分:0)

前几天,我做了一些类似的简短阅读,并且可以肯定,ActivityManager类将是实现此目的的最佳方法。 https://developer.xamarin.com/api/type/Android.App.ActivityManager/

此类中有一个名为RunningAppProcesses的方法,该方法返回设备上正在运行的应用程序进程的列表-从那里我猜您可以断言您的应用程序进程是否在列表中。

希望这会有所帮助