2012-02-21 9 views
11

mam sekcje w moim kodu (na przykład w AppDelegate.m), które nie powinny być tworzone dla testów jednostkowych, jakXcode: makra preprocesora dla kodu warunkowego DEBUG/TEST

#ifndef CONFIGURATION_TESTS 
// Code that should not be compiled in the Unit Tests 
#endif 

Cele są ustawione przez Xcode, gdy wybierzesz "dodaj testy jednostek" podczas tworzenia nowego projektu. W pliku projektu dodałem flagę CONFIGURATION_TESTS do makr Preprocessor dla obiektu MyAppTests Built-Target, ale nie dla celu MyApp.

To był sugerowany sposób w wielu wpisach, które znalazłem.

Ale to nie działa, ponieważ (tak myślę) cel MyAppTests ma cel MyApp jako zależność, a ponieważ AppDelegate.m jest dodawany do celu MyApp, jest kompilowany z ustawieniami kompilacji MyApp, a więc CONFIGURATION_TESTS nie jest zdefiniowana.

w jednostce testu plików makro jest zdefiniowane i zachowuje się zgodnie z oczekiwaniami (ponieważ pliki testowe zbudować tylko przez MyAppTests cel?)

Czy ktoś wie jak to zrobić, myślałem, że będzie to wspólny problem ...

+1

Mam ten sam problem i nie może zrozumieć to – shawnwall

+0

„To nie działa: 1) CONFIGURATION_TEST zawsze jest prawdą? 2) nigdy nie jest prawdziwe? 3) działa w jednostce testowej, ale nie w aplikacji? 4) działa w aplikacji, ale nie w testach jednostkowych? (pytające umysły chcą wiedzieć ...) – geowar

Odpowiedz

11

mam w końcu znalazłem odpowiedź sobie: Najważniejsze jest, aby utworzyć nową konfigurację kompilacji (pozwala wywołać tę konfigurację Testowanie)

Następnie należy skonfigurować wartości makra preprocesora odpowiednio, więc dla Debug konfiguracji i zwolnić ustawić CONFIGURATION_TESTS = 0 i Badań konfiguracji można ustawić CONFIGURATION_TESTS = 1

Wreszcie edycji schematu Unit-Test, aby do testów jak budować konfiguracja. To tyle: P

Pisałem szczegółowe wyjaśnienie krok po kroku, na co moim blog

+0

Głupie pytanie: dlaczego potrzebujesz CONFIGURATION_TESTS = 0 dla konfiguracje kompilacji bez testowania? Opuściłem tę część i wszystko wydawało się działać poprawnie. –

3

trzeba ustawić „CONFIGURATION_TESTS = 1”, nie tylko „CONFIGURATION_TESTS”

Powiązane problemy