2010-02-23 5 views
4

J'ai développé un framework Mac OS X et je veux utiliser OCUnit dans mon projet XCode 3.2.1. J'ai suivi plusieurs tutoriels sur la façon de configurer un bundle de test OCUnit. Le problème est que lorsque je crée un scénario de test qui utilise une fonction définie dans l'une des sources du framework, j'obtiens une erreur de construction me disant que le symbole n'est pas trouvé.Comment configurer un bundle de test OCUnit pour un framework?

J'ai fait dépendre le bundle de test de la cible de mon projet comme indiqué dans le tutoriel, mais cela ne semble pas poser de problème. J'ai d'abord pensé que je pouvais résoudre ce problème en faisant glisser les fichiers source du framework dans la section sources de compilation de la cible Test bundle, mais tous les symboles référencés à partir de ce fichier source apparaissaient dans les erreurs de compilation. être une bonne solution/idée.

Comment puis-je configurer mon ensemble de tests unitaires afin qu'il se compile correctement?

Répondre

4

J'écris aussi des tests unitaires sur un framework, j'espère pouvoir vous aider. Vous ne souhaitez pas recompiler les sources de cadre pour les tests unitaires. Au lieu de cela, vous souhaitez établir un lien avec le framework construit. Voici ce que je suggère:

  1. Ouvrez la fenêtre d'informations pour la cible de test unitaire en double-cliquant sur la cible dans la barre latérale.
  2. Dans l'onglet "Général", cliquez sur le signe + en bas à gauche pour ajouter une bibliothèque liée. Sélectionnez le framework que votre projet génère et cliquez sur "Ajouter". Fermez la fenêtre d'informations.
  3. Dans chacun de vos tests unitaires, importez le (s) fichier (s) d'en-tête dont vous avez besoin pour ce test. Comme Xcode connaît les fichiers de structure, vous devriez pouvoir utiliser le formulaire #import "MyHeader.h" plutôt que les chevrons (< et >).

À ce stade, vos tests unitaires doivent générer sans erreur. Sinon, peut-être en examinant comment mes tests unitaires sont configurés pour CHDataStructures peut aider.

1

Je pourrais le faire fonctionner en cliquant sur la case à cocher correspondant à mon cadre (celui qui apparaît dans la section produit) dans la table de visionneuse de fichiers qui apparaît dans les fenêtres principales de Xcode (je suppose qu'il met le fichier en cible o quelque chose comme ça). Il semble que faire glisser le framework dans le bundle de test unitaire fait une chose différente.

+1

Lorsque vous avez sélectionné l'ensemble de tests unitaires et que vous cochez la case correspondant à l'infrastructure que vous construisez, elle l'inclut dans la phase de liaison. Cela revient à ajouter une bibliothèque liée, même si le fait de parcourir la fenêtre d'information de la cible est généralement plus facile à comprendre pour la plupart des gens - c'est explicite, plutôt que dépendant de la cible active. –

Questions connexes