Ich arbeite schnell an Xcode und standardmäßig wird eine Testdatei erstellt, die auf XCTest verweist.
Wenn ich die Zielmitgliedschaft für mein Hauptprojekt festlege, verursacht dies diesen Fehler
Das zugrunde liegende Modul für XCTest kann nicht geladen werden
Wenn diese Zielmitgliedschaft nicht festgelegt ist, werden die Tests ordnungsgemäß ausgeführt und alles funktioniert einwandfrei.
PS: Ich bin neu in Swift und es ist wahrscheinlich eine dumme Frage (bitte klären Sie mich auf)
Antworten:
Das Hauptprojekt ist nicht mit dem XCUnit-Framework verknüpft. Sie sollten ein separates Testziel für Ihr Projekt erstellen, falls noch keines vorhanden ist, und Ihre Testquelldateien zu diesem Ziel hinzufügen.
Wenn Sie an einer iOS-Projektvorlage arbeiten , wählen Sie
iOS > Test > iOS Unit Testing Bundle
.Wenn Sie an einer OS X-Projektvorlage arbeiten , wählen Sie
OS X > Test > OS X Unit Testing Bundle
.quelle
Stellen Sie sicher, dass sich die betreffende Datei nicht im Hauptziel befindet, sondern nur im Testziel. Nur das Testziel kann dieses Framework importieren.
quelle
Sie haben gerade Ihre Testdatei / -klasse zum Hauptziel und nicht versehentlich zum Testziel hinzugefügt. So einfach ist das.
Lösung:
1) Entfernen Sie die Testdatei aus der Liste "Quellen kompilieren" auf der Registerkarte "Phasen erstellen" für das Hauptziel
2) Fügen Sie dieselbe Datei in "Quellen kompilieren" auf der Registerkarte "Phasen erstellen" für das Testziel hinzu
Es muss das Problem beheben
quelle
Ich erhalte diese Fehlermeldung, wenn ich ein dynamisches MacOS-Framework-Ziel erstelle, auf das verwiesen wird
XCTest.framework
(das Ziel ist ein Framework-Ziel, kein Testziel!).In diesem Fall wird das Problem durch Hinzufügen gelöst
zu "Build Settings / Framework Search Paths" des Projekts.
quelle
$(PLATFORM_DIR)/Developer/Library/Frameworks
falls Sie mehrere Versionen von Xcode unter verschiedenen Namen installiert haben (z. B. Release- und Beta-Versionen).Nach vielen Problemen bei der Fehlerbehebung und beim Stöbern auf Stack Overflow-Seiten wie dieser gelang es mir, ein Detail zu finden, das auf den anderen Seiten zur Fehlerbehebung bei iOS Unit Test nicht erwähnt wurde.
Wenn Ihr Projekt CocoaPods verwendet, stellen Sie sicher, dass Ihr Testziel im Ziel Ihrer Hauptanwendung verschachtelt ist. Ihre Poddatei enthält sie möglicherweise nicht, wenn Sie Ihr Testziel nach dem Ausführen erstellt haben
pod init
. Ihre Poddatei sollte ungefähr so aussehen:Denken Sie daran, Ihre Poddatei zu speichern und auszuführen
pod install
.Ich hoffe es hilft!
quelle
Das ist vielleicht etwas spät, aber was Sie tun müssen, ist:
Klicken Sie auf Datei> Neu> Ziel> iOS Unit Testing Bundle.
Und fügen Sie dann Ihre Tests dort hinzu. Das hat bei mir funktioniert. Das Problem war, dass ich beim Erstellen meines Projekts nicht Unit-Tests erstellen ausgewählt habe. Hoffe das hilft jemandem.
quelle
Dieses Problem tritt in Ihrem Projekt zweimal auf.
1: Antwort:
Zur Datei gehen Klicken Sie auf Datei.
Dann sehen Sie Erste Option Neu Klicken Sie darauf.
Nachdem Sie darauf geklickt haben, sehen Sie einige Optionen. Klicken Sie auf Ziel.
Und dann wird in der Suchleiste das IOS Unit Testing Bundle und Add Problem gelöst.
Wenn der Compiler Ihnen keine Berechtigung zum Hinzufügen geben kann, versuchen Sie es mit der zweiten Methode, wenn unten angegeben.
2. Beantworten Sie das CocoaPod-Problem:
Zum Produkt gehen Klicken Sie auf das Produkt.
Klicken Sie auf Reinigen oder drücken Sie cmd + k.
Das Problem ist gelöst.
quelle
Während die akzeptierte Antwort dieses Problem meistens löst, gibt es noch eine Möglichkeit, auf diesen Fehler zu stoßen.
Wenn Sie dies bereits sichergestellt haben:
Wie von @pwc @ nick-n und anderen hervorgehoben
ClassTest.swift
Datei für die Zielmitgliedschaft, indem sichergestellt wird, dass dies nur der Fall ist an das Testziel angehängt ist.ClassTest.swift
ist unter Ihrem Haupt-App-Ziel> Quellen erstellen> Quellen kompilieren nicht sichtbarFolgendes können Sie noch überprüfen:
in Ihrer
.podspecs
DateiStellen Sie sicher, dass Ihr
source_files
das Testverzeichnis nicht direkt oder indirekt enthält.zum Beispiel :
Beachten Sie, dass dies
Classes/**/*.{swift}
alles beinhaltet, was die Tatsache außer Kraft setzt, dass das VerzeichnisMyPodProjTests
ausgeschlossen werden muss.Lösung:
Hinweis: Dies ist ein äußerst Randfall und ein völlig menschliches Versagen, aber ich dachte, es lohnt sich, darauf hinzuweisen.
quelle
s.source_files
. Vielen Dank!Stellen Sie sicher, dass die Zielmitgliedschaft für alle Module deaktiviert ist, wenn das Testframework ausgewählt ist. Sie können die Option Zielmitgliedschaft anzeigen, indem Sie Ansicht-> Dienstprogramme-> Dateiinspektor anzeigen auswählen
quelle
In meinem Fall machte ich die Tests für einen privaten Pod, also war in der Podspec wie folgt:
Aber im Podfile habe ich vergessen, die Testspezifikation als solche mitzubringen:
quelle
Ich habe alles oben Genannte getan, aber ich durfte trotzdem nicht auf die Methoden zugreifen, die ich testen wollte. Aber bevor ich einen Testfall schrieb, baute ich das Projekt einmal und dann waren die Methoden zum Testen zugänglich. Probieren Sie es aus und lassen Sie mich wissen, ob es ein Problem gelöst hat.
quelle
Ich hatte das gleiche Problem und die Lösung für mich war:
Hoffe diese Antwort wird helfen.
PS: Ein letzter Gedanke in meinem Testziel in den Build-Einstellungen: Ich musste diese Eigenschaft überprüfen, die nicht richtig konfiguriert war:
quelle
Genau wie @Alfishe oben erwähnt:
Sie müssen die Testdateien von
Compiler Sources
unter entfernenBuild Phases
Wie nachfolgend dargestellt
quelle
Überprüfen Sie die Zielmitgliedschaft Ihrer Testklasse.
quelle
Das Problem ist, dass
Unit Testing Bundle
als Ziel vorher erstellt werden sollte[Wie man es hinzufügt]
quelle