Xcode projet comment détecter la cible par programmation ou comment utiliser env vars
Je veux faire un test de l'Application qui analyse certains json, les magasins de base de données, et lit de certains objets.
Comment mon code de savoir si elle est en cours d'exécution dans le cadre d'un test ou d'exécution normale? Juste une certaine façon de savoir "sommes-nous dans la cible de test"? Parce que l'application quand elle tire maintenant le coup d'envoi à un tas de demandes pour remplir ma coredata avec des informations à partir du serveur. Je ne veux pas que ça à faire pendant mes tests. Je veux le feu de l'Application, lisez codé en dur json à partir d'un fichier et de les stocker en utilisant les mêmes méthodes que sinon dans coredata, et de vérifier les résultats.
Si quelqu'un pourrait expliquer comment passer spécifique de paires clé-valeur par qui peut être lu à partir de l'application, je serais encore plus heureux.
Vous devez vous connecter pour publier un commentaire.
Jamais l'esprit... compris que c'est dans les "Régimes" que vous définissez cette.
Par exemple si vous voulez TARGET=TEST pour être disponible au cours du Test et de la CIBLE=RUN pour montrer au cours de l'exécution, il suffit de mettre dans votre Système > Variables d'Environnement > Nom/Valeur.
Puis, à partir de votre application, vous pouvez:
À l'aide de paramètres de construction avec les macros du préprocesseur ne fonctionne PAS pour moi b/c ma cible de test (pour l'application et les tests d'intégration) dépend de ma main (pas de test) de la cible, de sorte que la cible principale est construite d'abord et c'est ce qui fonctionne, et vous vous retrouvez avec cible principale des macros du préprocesseur, même si vous êtes après celles définies dans la cible que vous avez couru. Si j'ai raté quelque chose ici que quelqu'un n'hésitez pas à expliquer s'il vous plaît.
isTargetTest=YES
ensuite, vous pouvez lire un BOOL de la[[[NSProcessInfo processInfo] environment] objectForKey:@"isTargetTest"]
. Le BOOLÉEN peut être utilisée directement dans unif
-déclaration, sans la nécessité de comparer une chaîne de caractèresSi par "examen objectif" vous voulez dire que vos tests unitaires (c'est à dire
Product > Test
ou⌘U
), vous pouvez ajouter un pré-processeur de macro à la cible et vérifier que la macro dans votre code. Cela permet à quelque chose comme ce qui suit:Pour ce faire, cliquez sur votre fichier de projet dans l'explorateur de projets, sélectionnez votre cible de test, cliquez sur le
Build Settings
onglet, recherche pour "macros", double-cliquez sur lePreprocessor Macros
option, et en ajouter un!Il y a deux situations à traiter avec:
Tests
est sélectionné, et#import
certains fichiers pour une certaine cible, telle qu'Tests
.Code cible de la Cible de Test:
Créer une macro dans votre
ProjectName-Prefix.pch
fichier comme suit:et ensuite l'appeler n'importe où dans l'application:
Conditionnelle
#import
:À
#import
certains fichiers lors de laTests
la cible est sélectionnée, vous devez ajouter unPreprocessor Macro
à votreTest
cible et l'utiliser comme:Ici est de savoir comment vous pouvez ajouter un
Preprocessor Macro
:Vous pouvez utiliser la sous fonction.
Habituellement dans l'Unité de Test programmeurs utilisent se moquant de classes et de fonctions.
Vous pouvez créer une classe avec des objectifs de l'adhésion seulement pour le test de la cible.
Puis dans le code de l'application, vous pouvez vérifier si la classe existe à l'aide de
NSClassFromString
fonction (qui sera de retourNil
pour l'objectif n'est pas inclus dans le groupe cible de l'adhésion, dans ce cas - non la cible de test.Et vous pouvez de la malédiction de la fonction