Antworten:
In Ihrem Hauptziel müssen Sie die Enable Testability
Build-Option auf Ja setzen.
Gemäß dem Kommentar von @earnshavian unten sollte dies nur für Debug-Builds gemäß den Apple-Versionshinweisen verwendet werden: "Die Build-Einstellung" Testbarkeit aktivieren "sollte nur in Ihrer Debug-Konfiguration verwendet werden, da Optimierungen verboten sind, bei denen keine internen Symbole exportiert werden die App oder das Framework " https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable
), aber an den App Store gesendet werden müssen? Wenn Enable Testability
es sich nur um Debug-Builds handelt, wie geht das um? Muss ich meinen Testcode zur Freigabe herausziehen?
In meinem Fall habe ich eine benutzerdefinierte Build-Konfiguration zum Testen (aufgerufen Test
) und auch cocoapods
als Abhängigkeitsmanager verwendet
Ich musste die folgenden Zeilen am Ende meiner hinzufügen Podfile
, um die Testbarkeit zu ermöglichen
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name == 'Test'
config.build_settings['ENABLE_TESTABILITY'] = 'YES'
end
end
end
end
Standardmäßig cocoapods
setzt ENABLE_TESTABILITY
auf YES
nur für Debug
baut
Stellen Sie sicher, dass Sie Ihre Kontrollkästchen in Ihrem App-Schema richtig eingestellt haben. Sie sollten Ihre Testziele für Archive Build deaktivieren .
Für diejenigen unter Ihnen, die dies nur beim Ausführen von Xcode Profiler erleben: Wechseln Sie die Profilerstellungskonfiguration in Ihrer Schemaverwaltung zu der Konfiguration, für die die Testbarkeit aktiviert ist - und die in den meisten Fällen debuggt:
Dies liegt wahrscheinlich daran, dass Ihr Hauptziel auf eingestellt Enable Testability
ist NO
. Sie sollten es YES
im Debug-Schema festlegen (das zum Ausführen Ihrer Tests verwendet wird).
Wenn Sie Karthago verwenden, kann dieses Problem durch den Import von Frameworks mit verursacht werden @testable
, da diese mit einem Release-Schema erstellt wurden.
In den meisten Fällen ist es eine schlechte Praxis, Frameworks mit diesem Präfix zu importieren, damit Sie dies vermeiden können. Wenn Sie nicht können, sollten Sie Enable Testability
im Release-Schema der Frameworks. https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
Ich habe diesen Fehler erhalten, als ich Tests mit Bitrise ausgeführt habe.
Im Gegensatz zu anderen Benutzern sagen, dies ist nicht pro - Target
Basis oder pro Schema
Basis, es ist pro Configuration
Basis. Wählen Sie Target
-> Build Settings
Registerkarte -> Suchen nach testability
-> Aktivieren Sie es in der von Ihnen verwendeten Konfiguration .
Bitte beachten Sie, dass Apple empfiehlt, dies für die Konfiguration zu aktivieren, die Sie zum Debuggen verwenden, nicht für AppStore.
Wenn Sie versuchen, das Framework zu testen:
Gehen Sie zu Testziel -> Erstellungsphase -> Neue Kopierdateien erstellen -> Frameworks auswählen -> Alle rekursiv verwendeten Frameworks hinzufügen
Wenn Sie zufällig haben
install! 'cocoapods',
generate_multiple_pod_projects: true,
incremental_installation: true
Dann ist dies der richtige Weg.
# generated_projects only returns results if the we run "pod install --clean-install"
# or install a pod for the first time
installer.generated_projects.each do |project|
project.build_configurations.each do |configuration|
configuration.build_settings["ENABLE_TESTABILITY"] = "YES"
end
end
Dies trat in meinen Projekten vor Xcode 8 nicht auf, aber nachdem ich auf Xcode 8 aktualisiert hatte, war ich ratlos.
Die hier veröffentlichten Antworten haben meine Probleme nicht gelöst. Für mich habe ich diese Tests einfach fallen gelassen, da sie nicht benötigt werden. Deaktivieren Sie also die Testschaltflächen: