1
votes

Xamarin.UITest Impossible de contacter le backend de test en cours d'exécution dans l'application

J'essaie de tester mon application Xamarin.Forms avec Xamarin.UITest. Android fonctionne bien, mais la partie iOS a des problèmes. Lors de l'exécution de mon premier test pour accéder à REPL, j'obtiens l'erreur suivante:

SetUp : Xamarin.UITest.XDB.Exceptions.DeviceAgentException : Unable to contact DeviceAgent
  ----> System.AggregateException : One or more errors occurred.
  ----> Xamarin.UITest.XDB.Exceptions.DeviceAgentException : Unable to contact DeviceAgent on 127.0.0.1
  ----> System.Net.Http.HttpRequestException : An error occurred while sending the request
  ----> System.Net.WebException : Error: ConnectFailure (Connection refused)
  ----> System.Net.Sockets.SocketException : Connection refused

La chose étrange est que lors du téléchargement de l'application sur le Microsoft App Center, un test démarre. Il se bloque simplement parce qu'il ne parvient pas à trouver mes éléments de barre d'outils. Je voulais vérifier une requête valide avec REPL en faisant le test iOS sur mon Mac, alors que je travaille habituellement sur Visual Studio sous Windows.

J'ai essayé les solutions que j'ai trouvées en ligne sans succès p>

  • Mon projet .iOS inclut Xamarin.TestCloud.Agent
  • Dans AppDelegate.cs, j'ai Xamarin.Calabash.Start () directement après global :: Xamarin.Forms.Forms.Init ().
  • J'ai NUnit 2.6.4 et NUnitTestAdapter 2.1.1 dans le projet UITest
  • J'utilise ma configuration Debug / IPhoneSimulator

Je compile un fichier .app à partir de Visual Studio sur Windows connecté à un Mac et je lance le test iOS sur le Mac.

Voici mon code actuel pour AppInitializer:

return ConfigureApp.iOS.AppBundle(sPathToiOS).PreferIdeSettings().StartApp();

Parfois, j'obtiens également une erreur différente:

SetUp : System.Exception : Unable to contact test backend running in app. A common cause is that the app is not properly linked with Calabash. Please verify that it includes the Calabash component.


6 commentaires

Prémarrez simplement le simulateur iOS et laissez-le fonctionner.


Malheureusement, cela n'aide pas. Le simulateur est redémarré lorsque je lance le test. Est-il possible que le Mac soit trop lent pour tout démarrer à temps? Je peux démarrer mon application à partir de Windows dans le simulateur sans problème, mais utiliser le Mac me donne l'impression de regarder la peinture sécher.


Est-ce possible, le Mac est tout simplement trop lent pour tout démarrer à temps ... Certainement cela peut être le cas .... le simulateur est un disque IO hog (il aime les SSD et déteste les disques durs , au moins en termes de vitesse de démarrage) et si votre mac est limité en mémoire et échange des pages qui tueront perf. Combien de temps faut-il pour démarrer manuellement le simulateur et accéder à l'écran Springboard (accueil)? (Simulator.app (qui fait partie du bundle Xcode installé))


Du clic à l'affichage de l'écran d'accueil, il a fallu 1h25. Travailler directement sur le Mac sans teamviewer semble être positif pour les performances (j'ai pris le temps de travailler directement sur le Mac), mais je ne suis entré dans REPL qu'une seule fois et il s'est écrasé peu de temps après. C'est un Mac mini 2014 i7 avec 8 Go de RAM et pas de SSD


Selon le Mac que j'utilise 15/20 secondes pour un démarrage à froid du simulateur, c'est long: - / Mais tous sont basés sur SSD, j'ai un MacBook Pro basé sur la broche, et 2+ les minutes ne sont pas rares (CPU / i7 et RAM / 16 Go ne sont pas le problème dans ce cas, juste la vitesse du lecteur de broche)


Pouvez-vous exécuter des tests d'interface utilisateur sur le MacBook? Comme cela a fonctionné une fois, il arrive parfois au problème de l'agent de périphérique et parfois à l'exception de la mauvaise liaison, cela ressemble à un problème de synchronisation / performance.


3 Réponses :


1
votes

Donc, si quelqu'un a un problème similaire comme moi et se pose cette question: ma solution est de connecter un appareil physique au Mac et d'exécuter mon UI-Test dessus. Gardez à l'esprit que vous devez activer UIAutomation dans les paramètres de développement de l'appareil. Je peux maintenant exécuter mes tests sans problème.


0 commentaires

1
votes

Dans mon cas, Calabash n'était pas inclus dans la version de ma solution Xamarin.iOS lors de l'exécution de mon Xamarin.UITest.

J'ai résolu mon problème en suivant ceci documentation :

  • ajout de Xamarin.TestCloud.Agent dans le projet Xamarin.iOS
  • lancez Xamarin.Calabash.Start () dans le fichier AppDelegate.cs

0 commentaires

0
votes

Je devais m'assurer d'avoir redéployé l'application sur le simulateur sur lequel je vais tester, avec toutes les étapes nécessaires en place.

Ce qui m'est arrivé précisément, c'est que j'ai ajouté le Xamarin.Calabash.Start () au fichier AppDelegate.cs , mais je devais m'assurer de le redéployer sur le simulateur (en démarrant simplement l'application en mode débogage dans mon cas), en sortant, puis en démarrant le ou les tests d'interface utilisateur.

Cela garantira que la version correcte de l'application est sur le simulateur. C'est la seule façon de tester sur le simulateur; il ne déploiera pas l'application pour vous avant d'exécuter les tests.


0 commentaires