10
votes

Automatisation de xcode 'Débogou> Simuler la commande de localisation

Y a-t-il un moyen programmatique de contrôler la commande simuler la commande ? J'ai des scripts de test de localisation externes que je voudrais exécuter, et idéalement, la suite de tests pourrait entraîner une modification de Xcode de modifier l'emplacement du téléphone connecté à Will.

est-ce possible, et si oui, comment?


2 commentaires

Pouvez-vous élaborer sur ce que sont les "scripts de test d'emplacement externes"? Sont-ils des tests d'unité Xcode?


@Insertwittyname Il est littéralement des scripts en dehors de Xcode faire d'autres choses. Si je peux déclencher Xcode via l'automatiseur ou la XCTOOL ou quelque chose, ce serait idéal. Je suis automatisé davantage de tout un système qui a besoin d'un iPhone en mouvement et situé dans des positions à des moments différents.


4 Réponses :


7
votes

Je ne sais pas si c'est exactement ce que vous êtes après, mais vous pouvez avoir des bundles de test d'unité différents, utilisez des emplacements différents (ou des fichiers GPX) en la configurant dans le schéma.

Vous pouvez alors avoir des tests d'unité dans chaque paquet qui testez ce dont vous avez besoin concernant cet emplacement spécifique.

 schéma

xctool peut également simplement exécuter les tests de l'unité dans une cible spécifique à l'aide de l'option Sonly: xxx


1 commentaires

Cela pourrait fonctionner ... Donc, je pourrais avoir un fichier GPX fixe que j'ai écrit, puis exécutez les tests d'unité via XCTOOL sur l'appareil. Ce n'est pas une solution parfaite, mais c'est partiel.



2
votes

Oui, c'est possible. 1. Configurez les fichiers GPX comme décrit dans la réponse de @insertwittyname, ou Comme décrit dans ce blog publier . 2. Utilisez des instruments pour exécuter votre application dans le simulateur à l'aide des différents fichiers GPX.

J'écrirais tout le processus, mais Quelqu'un plus éloquent que moi déjà a .

En tant qu'utilisateur AVID S / O, je serais bereft pour laisser ce qui est fondamentalement une réponse à une seule liaison. Voici donc quelques informations supplémentaires en bonus.

  1. Vous devez certainement regarder Test de sécurité Votre Caractéristiques conscientes de l'emplacement . Je serai au chapeau noir cette année, alors si tu es là, parlons-en!

  2. Si vous n'aimez pas la réponse précédemment liée / en quelque sorte expliquée, vous pouvez utiliser xctest avec code pour simuler différents emplacements ( comme ceci ).

  3. Il semble qu'il y ait aussi des solutions de script Apple, comme celui-ci .

    J'espère avoir à tout le moins fourni suffisamment d'informations pour qualifier de réponse plus qu'une simple réponse de lien paresseux. Profitez et bonne chance!


0 commentaires

5
votes

Il y a un projet GitHub appelé Pokemon-go-contrôleur qui fait exactement ce que vous voulez.

Vue d'ensemble de la solution: p>

  1. créer un gpx code> fichier li>
  2. Créez un référencement de projet vierge (ne pas copier) que GPX code> et exécutez-le sur votre appareil LI>
  3. Exécutez auto clicker, qui cliquera constamment sur Lieu de mise à jour code> dans xcode li>
  4. Mettre à jour GPX code> à l'aide d'un script et de l'emplacement de l'appareil sera automatiquement mis à jour li> ol>

    au lieu du clicker automatique Vous pouvez utiliser ce script Apple: P>

    #Will continue update the location to the location name below from Xcode:
    
    property locationName : "pokemonLocation" #name of your gpx filex
    
    ###########################
    tell application "System Events"
        tell process "Xcode"
            repeat while true
                click menu item locationName of menu 1 of menu item "Simulate Location" of menu 1 of menu bar item "Debug" of menu bar 1
                delay 0.2
            end repeat
        end tell
    end tell
    


1 commentaires

J'aime vraiment votre réponse et le script Apple personnalisé, cependant, lorsque j'ai essayé de l'utiliser juste maintenant, il échoue avec une erreur vague indiquant qu'il ne peut pas trouver: nom d'emplacement, menu 1, élément de menu "Simuler l'emplacement" ou l'un des autres la déclaration. Pourriez-vous s'il vous plaît vérifier si vous répondez est toujours à jour? Merci d'avance :)



0
votes

Idevicelocation est un outil de ligne de commande pour simuler la géolocalisation dans les appareils iOS.

Utilisation:
$ Idevicelocation [Options] Latitude Longitude

Définissez l'emplacement qui passe deux arguments, latitude et longitude:

$ idevicelocation 48.856614 2.3522219000000177

Passer des valeurs négatives:

$ idevicelocation 77.432332 - -7.008373564

Simulation d'emplacement d'arrêt:

$ idevicelocation --Stop

Options:

-D Activer les messages de débogage de connexion.
-u spécifier le périphérique UDID.
-h aide.
-s Simulation d'emplacement d'arrêt sur le périphérique.

Il utilise la bibliothèque de libimobileDevice pour communiquer avec le processus com.apple.dt.simulatelocation également utilisé par Xcode en interne dans le même but.
Les instructions de construction sont présentes dans le fichier README.
Assurez-vous de monter l'image de développeur correcte avant d'aller des endroits aléatoires.
Merci à l'angulon pour écrire ce génial utilitaire.

Cet outil n'est actuellement pas expédié avec le paquet de libimobileDevice Bien qu'il y ait un Demande de retrait en attente depuis longtemps .


0 commentaires