2012-05-16 19 views
6

Ho un'area di lavoro XCode con un progetto di interfaccia utente (UI) e un progetto di core logic (Core). Voglio test delle unità OCUnit nel progetto dell'interfaccia utente, quindi ho aggiunto un nuovo obiettivo per i test, come è comunemente fatto.Unità di test con una libreria statica

Sono in grado di eseguire i test bene fino a quando non inserisco istruzioni di importazione per le classi nel target dell'interfaccia utente principale che a loro volta fanno riferimento al progetto Core.

L'errore riscontrato è "Problema lessicale o preprocessore" xxx.h "file non trovato". Non ricevo questo messaggio quando creo direttamente il target principale dell'interfaccia utente.

È come se il target principale dell'UI fosse a conoscenza di Core quando è stato creato, ma quando viene referenziato dal target di test sembra non sapere nulla di Core.

Ho fatto il passo di aggiungere un riferimento al progetto principale utilizzando "Collega i file binari con le librerie". L'elemento nell'elenco rimane rosso. Un indizio? Forse, ma il riferimento rosso nella lista dei collegamenti non mantiene il target dell'interfaccia utente dalla costruzione e dall'uso delle classi core. Ho anche fatto dell'obiettivo principale una dipendenza dall'obiettivo del test.

risposta

9

assicuratevi di controllare il codice di esempio di Apple "unit test": https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

Assicurarsi che il progetto di libreria è impostato come una dipendenza in fasi di creazione del bersaglio di prova OCUnit, ed è legato come una libreria.

Apri il tuo progetto in Xcode. Nel menu File, vai su Impostazioni progetto ... (o Impostazioni area di lavoro ... se stai utilizzando uno spazio di lavoro). Fai clic su Avanzate ... e assicurati che sia selezionato Unico. Pulisci e ricostruisci.

Controlla il tuo BUILD_PRODUCTS_DIR per vedere se le intestazioni per la tua biblioteca appaiono lì. Se non lo fanno, per prima cosa controlla le fasi di compilazione nel tuo target di libreria per assicurarti che le intestazioni che ti servono siano nella sezione Public (la sezione Project potrebbe funzionare bene, ma prova Public e vedi se questo risolve il tuo problema).

Questo copre i problemi più comuni che le persone sembrano incontrare nella vostra situazione. In caso di dubbio, controlla le impostazioni di destinazione nell'esempio UnitTests contro il tuo. In bocca al lupo!

0

Nel target di test, andare su Build Settings. Aggiungi il percorso alle intestazioni della libreria statica ai percorsi di ricerca dell'intestazione.

2

In aggiunta alla risposta di Jon Reid, ho dovuto fare anche quanto segue: Nel tuo target di prova, vai su Build Settings. Impostare "Cerca sempre percorsi utente" su SÌ

Problemi correlati