"Kein solches Modul" bei Verwendung von @prüfbar in Xcode Unit-tests
Ich kürzlich aktualisiert, um Xcode 7 beta 5. Ich habe versucht, das hinzufügen einer unit-test zu einem früheren Projekt, aber ich erhalte die Fehlermeldung "Kein solches Modul [myModuleName]" auf der @testable import myModuleName
Linie.
Versuchte ich
- Reinigung das Projekt mit Option Clean Build Folder
- überprüfen Sie, dass "Enable Testbarkeit" ("Debuggen") war ja in den Build-Optionen
- löschen der Prüfungen Ziel-und dann re-adding Sie das iOS-Gerät testen bundle
Keines dieser arbeitete für dieses Projekt (aber ich habe die Prüfung zum arbeiten in einen anderen Projekt). Hat sonst noch jemand dieses problem gehabt und es gelöst?
stackoverflow.com/questions/39944607/...
Wenn Sie erstellen von der Befehlszeile aus mit xcodebuild stellen Sie sicher, dass Sie die -Arbeitsbereich flag für Ihre build-Befehl. Ich löste dieses Problem auf meinem travis-build, der Weg.
stackoverflow.com/a/46525992/1645229
Wenn Sie erstellen von der Befehlszeile aus mit xcodebuild stellen Sie sicher, dass Sie die -Arbeitsbereich flag für Ihre build-Befehl. Ich löste dieses Problem auf meinem travis-build, der Weg.
stackoverflow.com/a/46525992/1645229
InformationsquelleAutor Suragch | 2015-08-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte überprüfen Sie Ihre Modul-Namen, die Sie versuchen zu importieren, mit
@testable import "ModuleName"
. Der Modul-name sollte der gleiche sein, aufTarget->Build Settings-> Product Module Name
space
und_
seien Sie vorsichtig über
-
und_
. Eines meiner Projekte hat minus-
im Namen, aber das Modul hat, Unterstrich_
stattich benutzte die
""
Idee, und bekamExpected identifier in import declaration
InformationsquelleAutor Voda Ion
Die Antwort, die für mich gearbeitet
War die Antwort, dass hatte ich einige Fehler in meinem Projekt, war den build fehlschlagen. (Es war nur Ihr standard jeden Tag Fehler im code.) Nachdem ich die Fehler behoben und machte einen sauberen und bauen, es funktionierte.
Beachten Sie, dass diese Fehler nicht zeigen, bis auf den ersten. Um Ihnen zu zeigen:
Wenn es andere Fehler, sollten Sie zeigen, bis jetzt. Fixieren Sie Sie und kommentieren Sie Ihre Test-Datei code. "Kein solches Modul" Fehler war Weg für mich.
In diesem Fall nicht das problem löst, für andere Menschen, können Sie auch versuchen, die folgenden:
Reinigen Sie den build-Ordner
Öffnen Sie das Produkt-Menü, halten Sie Option, und klicken Sie auf "Clean Build Folder..."
Stellen Sie sicher, dass Aktivieren Testbarkeit auf ja festgelegt ist
Im Projekt Navigator klicken Sie auf den Projektnamen. Wählen Sie Erstellen-Einstellungen und Blättern Sie nach unten, um Optionen Erstellen. Stellen Sie sicher, dass Aktivieren Testbarkeit ist ja (für debug).
Löschen und erneut hinzufügen, Ihre Tests Ziel
Wenn Sie getan haben, die anderen Dinge, die meine Vermutung ist, dass Sie wahrscheinlich nicht brauchen, dies zu tun. Aber wenn Sie das tun, denken Sie daran zu speichern, die Unit-Tests, die Sie bereits geschrieben haben.
Klicken Sie auf Ihren Projektnamen im Projekt-Navigator. Wählen Sie dann Ihre Tests Ziel. Klicken Sie auf die minus (-) Taste an der Unterseite, um es zu löschen.
Dann klicken Sie auf die plus-Schaltfläche ( + ), und wählen Sie iOS-Gerät Testen-Bundle fügen Sie es wieder zurück. Wie Sie sehen können, können Sie auch das hinzufügen eines UI-Test-Bundle in der gleichen Weise.
Ein paar andere Ideen
Oder...
Hinterlassen Sie einen Kommentar oder Antwort unten, wenn Sie etwas anderes gefunden, dass funktionierte.
Verwandte
*** WICHTIG *** Wenn Sie löschen und erneut hinzufügen, Ihre Test-Target, es wird wieder eine leere test-template überschreiben Ihrer vorhandenen tests. Speichern Sie Ihren test-Quellen vor, dies zu tun.
Für mich selbst meine einzelnen Klassen wurden nicht angezeigt beim Tippen ... ich schließlich auch Tat Product > Reinigen, Neustart von XCode. Wenn es neu gestartet wurde, gab es ein paar Sekunden, um die komplette Indexierung und dann voila alle meine Referenzen zeigte sich zimmerreserviereung, ohne das Sie jeder Klasse ein Mitglied von test-targets.
Auch wenn Sie noch nicht versucht, klicken Sie auf die fehlenden Rahmen auf der linken Seite, dann auf der rechten Seite wählen Sie "Ziel-Mitgliedschaft" und fügen ihn in Ihre unit-test-target.
Gehen Sie zu build-Einstellungen von Ihrem wichtigsten Ziel -> "Produkt-Modul-Name" und sehen Sie, wenn Sie mit dem Modul-Namen, die Sie versuchen zu importieren, die in Ihrem test.
InformationsquelleAutor Suragch
Das problem für mich war die iOS-Bereitstellung Ziel des tests war nicht die gleiche wie die Hauptzielgruppe. So sicher sein, dies zu überprüfen.
In der test-target:
Danach musste ich einstellen
Enable Bitcode
zuNo
auf den Test Bundle.Sie, mein Leben zu retten
Sind Sie richtig. Dank so viel.
Lol es funktioniert, aber wie dumm von xcode, dass es doens T werfen eine andere Fehlermeldung
InformationsquelleAutor Jess
Also das ist, wie ich ging über mein code funktioniert nach dem Versuch alle vorgeschlagenen Lösungen aus früheren Vorschläge.
"MyAppUnitTests" Ziele überprüft unter Ziel-Mitgliedschaft.
MyApp' an der Spitze, unterhalb des " import XCTest', und nur überprüft die
"MyAppUnitTests" unter Ziel-Mitgliedschaft
Und alles klappte. Hoffe, das hilft.
Ich habe alle oben genannten Schritte, aber ich habe noch kein solches Modul Fehler. mein Projekt ist ein swift, obj-c mischen obwohl
schreiben Sie tests, nur für die Swift-Dateien in Ihrem Objc/Swift-Mischung-code-Basis? (Ich Frage, weil, das Letzte mal ich überprüft, ich denke, die '@prüfbar importieren' funktioniert nur für das schreiben von test-Fällen für nur Swift-Dateien auch in Obj-c/Swift codebase-Mischung. Es wahrscheinlich kann sich mittlerweile geändert haben. Jemand korrigiert mich wenn ich hier falsch).
Ich habe mein problem gefunden. Es war, weil die Gültige Architektur meiner Test-target war nicht der gleiche wie mein Ziel Gültig-Architektur-Konfiguration. Jetzt funktioniert es. Btw, ich m testen nur Swift Klassen in meinem Fall, ich habe es nicht mal für Obj-c
Sollten Sie nicht fügen Sie die Anwendung von swift-Dateien, um Ihre test-target ist, wird es um deren Inhalte dupliziert, wenn die Durchführung von tests.
InformationsquelleAutor Vick Swift
Einer gotcha zu beobachten ist, dass, wenn Sie Ihr Modul-name einen Bindestrich in es
-
dann haben Sie zu finden, um es mit einem Unterstreichungszeichen anstelle_
. Aus irgendeinem Grund habe ich vermutet, dies könnte ein Problem sein, und es war in der Tat mein Problem.zB.
@testable import Ocean-Swift
wird@testable import Ocean_Swift
Nur eine andere Sache, wenn Sie tun, verwenden Sie die
@testable
syntax achten Sie darauf, nicht Ihre Produktion-code in Ihre test-target. Ich habe festgestellt, das wird die Ursache der unerklärlichen Seltsamkeit.InformationsquelleAutor smileBot
Diese sounds zu einem Fehler mit der build-Einstellungen der beiden Ziele.
Sie müssen sicherstellen, dass:
ENABLE_TESTABILITY
entspricht ja für beide Ziele.PRODUCT_MODULE_NAME
Wert des test-target unterscheiden soll von der Anwendung.InformationsquelleAutor yageek
Eine andere Sache zu prüfen: Wenn Sie ein Objective-C-Projekt, aber das schreiben von unit-tests in Swift, stellen Sie sicher, dass das Haupt-Ziel verwendet mindestens eine Swift-Datei!
Mehr info:
Ich wurde auf einer Objective-C-Projekt, aber wollte das schreiben von unit-tests in Swift.
Ich habe eine Swift-Datei, um das wichtigste Ziel, um die notwendigen ProjectName-Bridging-Header.h-Datei, schrieb meine Prüfungen und alles war richtig funktioniert.
Später habe ich gelöscht, der Swift-Datei, weil ich dachte, ich brauchte es nicht (alle main-target-code in Objective-C... ich war nur das schreiben von tests in Swift).
Ich habe nicht ein problem bemerken erst später, nachdem ich ein "clean/clean build folder" und "Kein Solches Modul" problem auftauchte. Nach einigen Kopfzerbrechen habe ich ein neues leeres Swift-Datei und das problem ging Weg.
Getestet hab ich es mehrfach mit/ohne Swift-Datei, und es funktioniert nur mit es... also werde ich es entweder lassen Sie die leere Datei in das Projekt, konvertieren einige Objective-C zu Swift, oder fügen Sie einige neuen code zu dem Projekt geschrieben in Swift.
Wissen Sie, wie Sie den Zugriff auf die Objective-C-Klassen im Swift-test-Klassen, Ursache, die ich importieren das Projekt, das Modul und es gibt keine Fehler, aber es immer noch nicht erkennen, meine Objective-C-Klassen. soll ich tun, anyother Sache ?
Einen weiteren Punkt möchte ich hinzufügen, wenn meine meist ObjC-Projekt hat mindestens eine Swift-Datei gab es keine bridging-header für mein Ziel. Folgen Sie der Anleitung auf dem folgenden link unter der überschrift "Import-Code In einer App Ziel" entschlossen, die Zugang ObjC Klassen von Swift-tests. developer.apple.com/documentation/swift/...
InformationsquelleAutor Jim Rhoades
Stellen Sie sicher, dass unter das Schema test-build-Einstellung, die test-target in der Liste.
Neben der play-Schaltfläche, wählen Sie den test-Schema aus und Bearbeiten Sie dann sche..., gehen Sie auf die Build-Abschnitt, klicken Sie auf+, und wählen Sie das Ziel, das Sie testen möchten gegen.
In meinem Fall, wir haben ein internes Ziel entwickeln wir mit (ein paar kleine Unterschiede) und nach einer Zusammenführung, es wurde entfernt, in der test-Konfiguration.
InformationsquelleAutor BrianHenryIE
Meine Lösung ist hier.
Erstens OdeAlSwiftUITest.swift-klicken, dann check Projekt in Ziel Zielname Mitgliedschaft.
InformationsquelleAutor eyupcimen
Hier ist noch eine andere Sache zu prüfen, der nicht aufgeführt ist. Für mich, es hatte etwas zu tun mit meinem team, vielleicht, weil unsere Team-Agent war noch nicht vereinbart, um die neuesten Vereinbarung! Einmal wählte ich ein anderes Team, in meinem Ziel, die Allgemeinen Einstellungen, UND dann habe ich bestimmte Ziel der Bereitstellung wie 12.1 11.0, plötzlich "Kein Solches Modul" Warnung ging Weg.
InformationsquelleAutor Dave Levy
Mein Problem war, dass die Klasse, die ich testen wollte war eigentlich in einem separaten Modul (API-Client), aber die Klasse war eigentlich ein Mitglied der app Ziel und nicht die Rahmen-Ziel. Ändern der Ziel-Mitgliedschaft in der Klasse, die aus der import-Fehler gehen Sie Weg!
InformationsquelleAutor Maciej Swic
Umgebung: Xcode Version 9.0 (9A235)
Szenario: Testing an open-source-framework.
Ich hatte das gleiche problem: "Kein solches Modul'.
Lösung:
getestet via Link Binary...
Hier ist der test-Datei:
InformationsquelleAutor Frederick C. Lee
Hatte ich das gleiche Problem. Reinigung der build-Ordner und Neustart von Xcode nicht funktioniert.
Was hat Arbeit für mich war, sicherzustellen, dass die Einstellung für "Build Active-Architektur Nur" Ihre test-target und Regelung entspricht der Einstellung Ihrer app, das Ziel und das Schema.
InformationsquelleAutor palmi
Ich die obigen Schritte befolgt, was auch geklappt hat. Allerdings ist mein Projekt hatte ein paar mehr Probleme. Ich habe diese Warnung und ich konnte nicht auf Klassen von meinem Haupt-Projekt, test in meinem test-target.
Fand ich, dass Ihre Test-target Produkt Modulname (YourTestTarget -> Build-Einstellungen -> Suche für
product module
) kann nicht der gleiche name wie der name Ihres Projekts.Einmal wechselte ich das Produkt-Modul-Name für meine test-target-hat alles geklappt.
InformationsquelleAutor Bryan Norden
Nachdem er paar Tage auf diese Fragen, schließlich mache ich es mit meinem Projekt. Problem war in den Bridging-Header - Pfad in Tests Ziel kann nicht leer sein, wenn Sie den Bridging-Header in Ihrem Haupt-Ziel
Hoffe, es wird auch sparen Sie einige Zeit für jemanden.
InformationsquelleAutor Igor P
Für mich die Lösung war das umbenennen
@prüfbar import myproject_ios
zu
@prüfbar import myproject
nachdem ich aktualisiert hatte, Produkt-name der Ziel-myproject-ios in den Build-Einstellungen/Packaging - /Produkt-Name/von ${TARGET_NAME}, um myproject.
InformationsquelleAutor Matthias
War dieses fest für mich, wenn ich änderte die Ziel der Bereitstellung von 9,3 bis 11,0.
Allgemeinen > - Bereitstellung Ziel - > "11.0"
InformationsquelleAutor user9226093
Wenn Sie xcodebuild und finden dieses problem, sollten Sie erwägen, in einen Arbeitsbereich flag mit dem Befehl build.
Geändert
Zu Diesem
InformationsquelleAutor Victor 'Chris' Cabral
In den build-Einstellungen test-target, überprüfen Sie die host zu testen, nimmt es den Namen in PRODUCT_NAME.
Es ist jener name, den Sie verwenden sollten in der test-Klassen.
Ich empfehlen-nicht zu ändern PRODUCT_NAME (match name des Haupt-Ziel)
InformationsquelleAutor Sam
Wie beschrieben in diese Antwort ich das hinzufügen Swift-tests, um eine Obj-C nur Projekt. Die Lösung war, fügen Sie eine dummy-Swift-Klasse, nach der die Xcode würde Eingabeaufforderung hinzufügen, um einen bridging-header, dann das entfernen der Swift-Klasse. Alles war in Ordnung danach.
InformationsquelleAutor funkybro
Ich neben den anderen Sachen die ich hatte, um die Datei mit der Klasse, ich war versuchen zu testen, um meine kompilieren Sie die Quellen für den unit-test Modul
InformationsquelleAutor Matt D
Ich denke, dies kann geschehen, weil ich Sie gelöscht, das Beispiel-tests.
Entfernte ich die Unit test bundle dann wieder Hinzugefügt, die es, wie gezeigt, in die Bilder unten, und alles war wieder gut.
InformationsquelleAutor Declan McKenna