使用Xamarin.UITest测试我的Xamarin.Forms iOS应用程序:第一次测试始终失败

时间:2019-01-17 15:07:11

标签: xamarin xamarin.ios automated-tests ui-testing xamarin.uitest

我正在使用Xamarin.UITest在真实设备(带有iOS 12.1的iPhone 6s)上测试Xamarin.iOS应用程序。 当我运行少数UI测试时,由于相同的错误(请参见下文),第一个测试总是会崩溃(无论测试中发生了什么)。

环境是:

  • Xamarin.UITest 2.2.7

  • NUnitTestAdapter 2.1.1

  • NUnit 2.6.3

  • Xamarin.TestCloud.Agent 0.21.7

设置为:

[SetUp]
public void Setup(){
     this.app = ConfigureApp.iOS
        .EnableLocalScreenshots()
                .InstalledApp("my.app.bundle")
                .DeviceIdentifier("My-iPhone6s-UDID-With-iOS12.1")  
                .StartApp();
}

[Test]
public void FirstTestThatCouldBeEmpty(){
     //But doesn't have to be empty to produce the error    
}

产生的错误:

  

2019-01-17T14:11:20.4902700Z 1-ClearData:> 2019-01-17T14:11:20.4916340Z bundleId: my.app.bundle   2019-01-17T14:11:20.4929580Z deviceId:我的iPhone6s-UDID-With-iOS12.1

     

2019-01-17T14:11:33.7561260Z 3-LaunchTestAsync:

     

2019-01-17T14:11:33.7574050Z deviceId:我的iPhone6s-UDID-With-iOS12.1

     

2019-01-17T14:11:33.9279420Z 5-HTTP请求失败,重试限制达到

     

2019-01-17T14:11:33.9302300Z异常:System.Net.Http.HttpRequestException:发送请求时发生错误---> System.Net.WebException:无法从传输连接读取数据:连接由对等方重置。 ---> System.IO.IOException:无法从传输连接中读取数据:连接被对等方重置。 ---> System.Net.Sockets.SocketException:对等重置连接

     

2019-01-17T14:11:33.9322710Z在System.Net.Sockets.Socket.EndReceive(System.IAsyncResult asyncResult)[0x00012]在<23340a11bb41423aa895298bf881ed68>:0

     

2019年11月23日的System.Net.Sockets.NetworkStream.EndRead(System.IAsyncResult asyncResult)[0x00057]中的

2019-01-17T14:11:33.9340560Z:0:0

     

2019-01-17T14:11:33.9358740Z-内部异常堆栈跟踪结束---

     

2019年11月23日的System.Net.Sockets.NetworkStream.EndRead(System.IAsyncResult asyncResult)[0x0009b]中的

2019-01-17T14:11:33.9377100Z:0340

     

2019-01-17T14:11:33.9398100Z位于System.IO.Stream + <> c.b__43_1(System.IO.Stream流,System.IAsyncResult asyncResult)[0x00000]在<98fac219bd4e453693d76fda7bd96ab0>:0

中      

2019-01-17T14:11:33.9415720Z位于System.Threading.Tasks.TaskFactory 1+FromAsyncTrimPromise 1 [TResult,TInstance] .Complete(TInstance thisRef,System.Func`3 [T1,T2,TResult] endMethod,System.IAsyncResult asyncResult,System.Boolean requireSynchronization)[0x00000]在<98fac219bd4e453693d76fda7bd96ab0>:0

有时候是这个错误:

  

SetUp:Xamarin.UITest.XDB.Exceptions.DeviceAgentException:无法结束会话:发送请求时发生错误

     

System.Net.Http.HttpRequestException:发送请求时发生错误

     

System.Net.WebException:无法从传输连接中读取数据:连接被对等方重置。

     

System.IO.IOException:无法从传输连接中读取数据:连接被对等方重置。

     

System.Net.Sockets.SocketException:对等重置连接

对此有什么解决方案? 进行nuget软件包的版本拼图使我走了这么远,所有测试都在此范围之外进行。

可能会进行虚拟测试,但这将导致那些测试的大量构建永远不会处于“成功”状态,因为该测试失败=(

1 个答案:

答案 0 :(得分:0)

我能够找到解决此问题的方法,实际上是设备代理未连接到被测应用的任何问题。

        public static IApp StartApp(Platform platform)
        {
            if (platform == Platform.iOS)
            {
                try
                {
                    return ConfigureApp.iOS
                       .InstalledApp("com.example")
#if DEBUG
                       .Debug()
#endif
                       .StartApp();
                }
                catch
                {
                    return ConfigureApp.iOS
                        .ConnectToApp()
#if DEBUG
                        .Debug()
#endif
                        ;
                }
            }

用通俗易懂的语言:“如果您尝试启动该应用程序,但出了点问题,请尝试查看被测试的应用程序是否已启动并连接到该应用程序”