2013-11-14 14 views
14

Ho trovato uno strumento da riga di comando chiamato "xctest" che apparentemente può eseguire i test unitari nel progetto. Questo eseguibile vive qui:Come posso eseguire xctest dalla riga di comando con Xcode 5?

/Applications/Xcode.app/Contents/Developer/usr/bin/xctest 

Quando provo ad eseguire questo eseguibile sul mio fagotto xctest, sto usando:

$ ./xctest /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest 

Tuttavia, ottengo il seguente output:

Test Suite '(null)' started at 2013-11-14 21:16:45 +0000 
Test Suite '(null)' finished at 2013-11-14 21:16:45 +0000. 
Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds 

Non esiste una pagina man per xctest, per quanto posso dire, ma inserendo solo ./xctest alla resa della riga di comando:

Usage: xctest [--test Self | All | None | <TestCaseClassName/testMethodName>] <path of unit to be tested> 

In particolare, mi piacerebbe essere in grado di testare solo un particolare metodo in una classe di test, motivo per cui mi piacerebbe utilizzare questo comando xctest.

faccio vedere che c'è un modo per eseguire tutti i test dalla linea di comando come:

$ xcodebuild test -scheme MyApp 

Questo viene eseguito tutti i test di unità e funzioni correttamente (vedo i miei risultati dei test di unità, a differenza di quando si utilizza xctest). Ma sono interessati ad essere in grado di eseguire un unico metodo di prova dalla riga di comando, come ad esempio:

$ ./xctest --test MyAppTests/testExample /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-abcdefghijklmnop/Build/Products/Debug/MyAppTests.xctest 

risposta

5

Nonostante quello che il messaggio di utilizzo dice -XCTest è l'argomento è necessario:

xctest -XCTest MyAppTests/testExample testbundle.xctest 

Per l'invocazione diretta di xctest al lavoro, potrebbe anche essere necessario impostare DYLD_FRAMEWORK_PATH e DYLD_LIBRARY_PATH nella directory dei prodotti creati. In generale è necessario utilizzare gli stessi argomenti e l'ambiente di Xcode, è possibile visualizzarlo inserendo un punto di interruzione in uno dei test, eseguendoli tramite Xcode, quindi stampando i valori di arguments e environment per [NSProcessInfo processInfo].

Per evitare problemi con tutte le note, è possibile modificare lo schema in Xcode per eseguire solo test specifici. In Prodotto> Schema> Modifica schema selezionare l'azione Test ed espandere il pacchetto di test. È possibile utilizzare le caselle di controllo per selezionare i test da eseguire e l'azione di test di xcodebuild eseguirà solo questi test.

+1

Grazie! In realtà non avevo bisogno di impostare le variabili di ambiente per DYLD_FRAMEWORK_PATH e DYLD_LIBRARY_PATH. Avevo bisogno di assicurarmi di avere la corretta posizione del pacchetto xctest in Build/Products/Test, invece di Build/Products/Debug. Quindi il mio percorso era simile a: ./xctest -XCTest MyTestClass/testMyTestFunction /Users/username/Library/Developer/Xcode/DerivedData/MyApp-abcdefjhikjklmn/Build/Products/Testing/MyAppTests.xctest –

+0

Grazie per il suggerimento sulla disattivazione dei test nel schema. È possibile selezionare più righe e utilizzare la barra spaziatrice per alternare la selezione - molto utile! – funroll

Problemi correlati