Pracuję szybko nad Xcode i domyślnie tworzy plik testowy, który odwołuje się do XCTest.
Kiedy ustawiam docelowe członkostwo w moim głównym projekcie, powoduje to błąd
Nie można załadować podstawowego modułu dla XCTest
Jeśli to docelowe członkostwo nie jest ustawione, testy działają poprawnie i wszystko działa poprawnie.
PS: Jestem nowy w szybkim i to chyba głupie pytanie (proszę, oświeć mnie)
Odpowiedzi:
Główny projekt nie łączy się ze środowiskiem XCUnit. Należy utworzyć osobny cel testowy dla swojego projektu, jeśli jeszcze nie istnieje, i dodać do tego celu źródłowe pliki testowe.
Jeśli pracujesz nad szablonem projektu iOS , wybierz
iOS > Test > iOS Unit Testing Bundle
.Jeśli pracujesz nad szablonem projektu OS X , wybierz
OS X > Test > OS X Unit Testing Bundle
.źródło
Sprawdź dokładnie, czy dany plik nie znajduje się w głównym celu, ale tylko w miejscu docelowym testu. Tylko cel testowy będzie miał tę strukturę do zaimportowania.
źródło
Właśnie dodałeś plik / klasę testów do głównego celu, a nie przez pomyłkę. Proste.
Rozwiązanie:
1) Usuń plik testowy z listy „Kompiluj źródła” w zakładce „Fazy budowania” dla głównego celu
2) Dodaj ten sam plik do „Kompiluj źródła” na karcie „Kompiluj fazy” dla celu testowego
To musi rozwiązać problem
źródło
Ten błąd pojawia się, gdy utworzę dynamiczny cel struktury macOS, do którego prowadzi łącze
XCTest.framework
(celem jest cel struktury, a nie cel testowy!).W takim przypadku problem zostanie rozwiązany przez dodanie
do projektu „Ustawienia kompilacji / Ścieżki przeszukiwania ram”.
źródło
$(PLATFORM_DIR)/Developer/Library/Frameworks
w przypadku, gdy masz wiele wersji Xcode zainstalowanych pod różnymi nazwami (np. Wersja i wersja beta).Po wielu problemach i podskakiwaniu na stronach przepełnienia stosu, takich jak ten, udało mi się znaleźć jeden szczegół, który nie został wymieniony na innych stronach rozwiązywania problemów z testem jednostkowym iOS.
Jeśli Twój projekt używa CocoaPods, pamiętaj o uwzględnieniu celu testowego zagnieżdżonego w celu głównym aplikacji. Twój podfile może go nie zawierać, jeśli utworzyłeś cel testowy po uruchomieniu
pod init
. Twój plik pod powinien wyglądać mniej więcej tak:Pamiętaj, aby zapisać plik pod i uruchomić
pod install
po wykonaniu.Mam nadzieję, że to pomoże!
źródło
To może trochę za późno, ale musisz:
Kliknij Plik> Nowy> Cel> Pakiet testów jednostkowych iOS.
A następnie dodaj tam swoje testy. To zadziałało dla mnie. Problem polegał na tym, że nie wybrałem opcji tworzenia testów jednostkowych podczas tworzenia projektu. Mam nadzieję, że to komuś pomoże.
źródło
Ten problem występuje dwa razy w twoim projekcie.
1: Odpowiedź:
Idź do pliku Kliknij na Plik.
Następnie zobaczysz Pierwsza opcja Nowy Kliknij na to.
Po kliknięciu zobaczysz opcję Kliknij opcję Cel.
A następnie w pasku wyszukiwania Wyszukaj pakiet testowania jednostki IOS i dodaj problem został rozwiązany.
jeśli Kompilator nie może dać ci pozwolenia na dodanie tego, spróbuj Drugiej Metody, gdy jest podany poniżej.
2. Odpowiedz Problem CocoaPod:
Przejdź do produktu Kliknij na produkt.
Kliknij wyczyść lub naciśnij cmd + k.
Problem jest rozwiązany.
źródło
Chociaż przyjęta odpowiedź rozwiązuje ten problem przez większość czasu, istnieje jeszcze jeden sposób na znalezienie tego błędu.
Jeśli już zapewniłeś, że:
Jak wskazali @pwc @ nick-n i inni
ClassTest.swift
Plik do członkostwa docelowej poprzez zapewnienie, że jest tylko dołączony do celu badania.ClassTest.swift
Jest nie widoczne pod tobą głównych app docelowych> Źródła budowlanej> Źródła skompilowaćOto co jeszcze możesz sprawdzić:
w twoim
.podspecs
plikuUpewnij się, że
source_files
nie zawiera on bezpośrednio ani pośrednio katalogu testowego.na przykład :
Zauważ, że
Classes/**/*.{swift}
obejmuje wszystko, co przesłania fakt, że katalogMyPodProjTests
musi zostać wykluczony.Rozwiązanie:
Uwaga: jest to skrajny przypadek i całkowicie ludzki błąd, ale pomyślałem, że warto to podkreślić.
źródło
s.source_files
. Dzięki!Upewnij się, że docelowe członkostwo jest zaznaczone dla wszystkich modułów, gdy wybrana jest struktura testowa. Możesz wyświetlić opcję Docelowe członkostwo, wybierając Widok-> Narzędzia-> Pokaż inspektora plików
źródło
W moim przypadku testowałem prywatny kapsuła, więc w podspec było jak:
Ale w Podfile zapomniałem przynieść specyfikację testu jako taką:
źródło
Zrobiłem wszystkie powyższe, ale nadal nie miałem dostępu do metod, które chciałem przetestować. Ale zanim napisałem jakiś przypadek testowy, zbudowałem projekt raz, a potem metody były dostępne do przetestowania. Więc spróbuj i daj mi znać, czy to rozwiązało jakiś problem.
źródło
Miałem ten sam problem i rozwiązaniem było dla mnie:
Mam nadzieję, że ta odpowiedź pomoże.
PS: ostatnia myśl w moim celu testowym w ustawieniach kompilacji musiałem sprawdzić te właściwości, które nie zostały poprawnie skonfigurowane:
źródło
Tak jak wspomniano powyżej @Alfishe:
Musisz usunąć pliki testowe spod
Compiler Sources
spoduBuild Phases
Jak pokazano niżej
źródło
Sprawdź docelowe członkostwo swojej klasy testowej.
źródło
Problemem jest
Unit Testing Bundle
jako cel powinien zostać wcześniej utworzony[Jak to dodać]
źródło