J'ai construit un test d'unité et d'écriture dans GHUnit. L'une des méthodes d'accès de mon Framework renvoie un NSInteger.Différences NSInteger entre CLI et GUI?
J'affirme la valeur attendue dans les essais comme celui-ci:
GHAssertEquals(1320, request.port, @"Port number should be 1320");
Lors de l'exécution de mes tests avec une interface utilisateur basée frontend AppKit cette affirmation passe.
Cependant, lorsque j'exécute mes tests sur la ligne de commande, il échoue avec une incompatibilité de type à moins que je tape mon code 1320 codé en dur comme (NSInteger)
. Qu'est-ce qui cause la différence dans la façon dont l'entier est interprété par le compilateur? Xcodebuild est-il sur la ligne de commande en utilisant un type de données différent pour les entiers codés en dur?
Le compilateur choisira 'int' pour une constante égale à 1320. Il s'agit d'une constante décimale, sans suffixe, et qui se situe dans la plage minimale spécifiée pour' int'. – dreamlax
Vous avez raison! Je construisais un binaire universel depuis Xcode. Mes tests sont moins fragiles si je suis explicite sur les types de données en tout cas donc c'était une bonne trouvaille :) – d11wtq