Schemat projektu Xcode nie jest obecnie skonfigurowany dla akcji testowej


84

Próbuję uruchomić test jednostkowy Xcode dla mojej aplikacji na iOS. Chętnie zrobię to na iPadzie podłączonym przez USB do komputera Mac. Próbuję uruchomić test z wiersza poleceń, aby później uruchomić go z Jenkinsa.

Poniżej znajduje się opis tego, co obecnie wpisuję w wierszu poleceń, oraz otrzymywany błąd. Proszę pomóż.

Kod:

xcodebuild test -scheme MyApplication -destination "platform=iOS,name=iPad"

Błąd:

Schemat MyApplication nie jest obecnie skonfigurowany do działania testowego


Wydaje się, że nie jest to problem związany z Jenkinsem, ponieważ jeszcze nie używasz Jenkins. Proponuję usunąć tag Jenkins. Wyszukaj tutaj podobne pytania, aby sprawdzić, czy pomagają, czy nie. stackoverflow.com/questions/20237064/… stackoverflow.com/questions/25970396/…
mainframer

Dzieki za sugestie. Natrafiłem już na ten przykład. Wygląda na to, że nie jest to bezpośrednio związane z moim problemem. W moim przypadku jest to prawdopodobnie związane z udostępnianiem schematu. Mam kilka schematów w moim projekcie Xcode, próbowałem udostępnić / cofnąć udostępnianie, usunąć i odtworzyć je na różne sposoby - nadal nie mam szczęścia ..
danR

Odpowiedzi:


202

U mnie problem polegał na tym, że do mojego schematu nie zostały dodane żadne testy:

Edytor schematów

Dodając pakiety testowe do mojego schematu za pomocą przycisku „+”, schemat mógłby zostać zbudowany przez Xcode i xcodebuild.


3
Zrobi to również, jeśli spróbujesz uruchomić je z konsoli, mając otwarty projekt.
iwasrobbed

@iwasrobbed uratował mój dzień! to może być raczej jedna z odpowiedzi niż komentarz
anoo_radha

Dodałem schemat testowy, ale opcja „Test” nie została zaznaczona. Sprawdzanie, czy to zadziałało,
drees

Jak otworzyć to menu?
Bogdan Bogdanov

@BogdanBogdanov W lewym górnym rogu Xcode, po prawej stronie przycisku „Zatrzymaj”, kliknij swój schemat, a następnie kliknij „Edytuj schemat ...”.
David Hunt

33

Dla wszystkich borykających się z tym problemem.

Moim rozwiązaniem było:

  1. Wybierz Cel testu
  2. Zarządzaj schematem
  3. Wybierz Uruchom w menu po lewej stronie
  4. Wybierz Informacje na karcie
  5. Wybierz Executable Target z menu rozwijanego
  6. Kliknij Zamknij .

18

Naprawiono to, usuwając zduplikowane schematy z Xcode. Schematy można dodawać / usuwać / udostępniać / edytować w Xcode poprzez Produkt -> Schemat -> Zarządzaj schematami .


2
Dzięki! To była wskazówka, której potrzebowałem, i wspomnę o bardziej subtelnym scenariuszu, który mnie uderzył: drugi schemat, o tej samej nazwie, ale osadzony w zależnym projekcie. Wygląda na to, że wyrzuca to również xcodebuild, ponieważ może faworyzować schemat odziedziczony z zależnego projektu.
danielpunkass

2
Aby sprawdzić zduplikowane schematy, uruchom: xcodebuild -workspace path/to/workspace/file -listlub xcodebuild -project path/to/project/file -list. Zduplikowane schematy mogą być pozostałościami z poprzednich wersji obszaru roboczego, więc wystarczy prosty git clean.
Ohad Schneider

3
  • Powinieneś sprawdzić dane swojego obszaru roboczego na Jenkins i zobaczyć, który plik * .xctest jest już załadowany. Następnie musisz zmienić nazwę celu testu interfejsu użytkownika / jednostki na dane * .xctest w projekcie xcode, takie jak te, które masz na Jenkins, a następnie ponownie wcisnąć.
  • LUB wyczyść obszar roboczy z Jenkinsa i ponownie prześlij wszystkie dane z nowym celem testu UI / Unit.

(Oczywiście musisz się upewnić, że masz już przygotowany schemat projektu).


2

Aby rozwiązać ten błąd, wykonaj następujące czynności.

  1. Wybierz schemat swojego projektu u góry.
  2. Kliknij Zarządzaj schematami .
  3. Wybierz cel testu w wyskakującym okienku.
  4. Pamiętaj, aby kliknąć przycisk Edytuj w lewym dolnym rogu wyskakującego okienka.
  5. Wybierz Build .
  6. Kliknij pole wyboru poniżej „ Uruchom
  7. Zamknij wyskakujące okienko.


0

Mój problem polegał na tym, że Tests.swiftplik importował moduł, który już nie istniał (zmieniłem nazwę Targets dla projektu). Sprawdź, czy wszystkie pliki testowe importują aktualnie istniejące moduły.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.