Próbuję użyć nowej @testable
deklaracji Swift 2, aby udostępnić moje klasy celowi testowemu. Jednak otrzymuję ten błąd kompilatora:
Intervals
to moduł zawierający klasy, które próbuję ujawnić. Jak pozbyć się tego błędu?
źródło
Próbuję użyć nowej @testable
deklaracji Swift 2, aby udostępnić moje klasy celowi testowemu. Jednak otrzymuję ten błąd kompilatora:
Intervals
to moduł zawierający klasy, które próbuję ujawnić. Jak pozbyć się tego błędu?
W swoim głównym celu musisz ustawić Enable Testability
opcję kompilacji na Tak.
Zgodnie z komentarzem @earnshavian poniżej, powinno to być używane tylko w kompilacjach debugowania zgodnie z uwagami do wydania Apple: „Ustawienie Włącz kompilację testowalności powinno być używane tylko w konfiguracji debugowania, ponieważ zabrania optymalizacji, które polegają na nieeksportowaniu symboli wewnętrznych z aplikacja lub platforma ” https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable
), ale trzeba je przesłać do App Store? JeśliEnable Testability
jest przeznaczony tylko do kompilacji debugowania, jak można to obejść? Czy muszę wyciągnąć kod testowy, aby go zwolnić?W moim przypadku użyłem niestandardowej konfiguracji kompilacji do testowania (wywoływanej
Test
), a takżecocoapods
jako menedżera zależnościMusiałem dodać następujące wiersze na końcu mojego,
Podfile
aby umożliwić testowalnośćDomyślnie
cocoapods
ustawiaENABLE_TESTABILITY
sięYES
tylko naDebug
kompilacjeźródło
Upewnij się, że prawidłowo ustawiłeś pola wyboru w schemacie aplikacji. POWINIENEŚ ODCZYTAĆ cele testowe dla kompilacji archiwum.
źródło
Dla tych z Was, którzy doświadczają tego tylko po uruchomieniu Xcode Profiler: zmień konfigurację budowania profilu w zarządzaniu schematem na taką, która ma włączoną testowalność - i w większości przypadków będzie to debugowanie:
źródło
Dzieje się tak prawdopodobnie dlatego, że
Enable Testability
ustawiono główny celNO
. Powinieneś ustawić to naYES
w schemacie debugowania (który jest używany do uruchamiania testów).Jeśli używasz Carthage, ten problem może być spowodowany importowaniem frameworków z
@testable
, ponieważ są one zbudowane przy użyciu schematu wydania.W większości przypadków importowanie frameworków z tym prefiksem jest złą praktyką, więc można tego uniknąć. Jeśli nie możesz, powinieneś
Enable Testability
w schemacie wydawania frameworków. https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326źródło
Zacząłem otrzymywać ten błąd podczas uruchamiania testów przy użyciu Bitrise.
W przeciwieństwie do innych użytkowników, to nie jest na
Target
podstawie lub naSchema
podstawie, to jest naConfiguration
podstawie. WybierzTarget
->Build Settings
zakładka -> szukajtestability
-> Włącz ją w używanej konfiguracji .Zwróć uwagę, że Apple zaleca włączenie tego w konfiguracji używanej do debugowania, a nie w AppStore.
źródło
Powyższe rozwiązanie jest w porządku, jeśli używasz strąków / Kartaginy. Ale jeśli używasz frameworków z samego iOS "np. Kontakty", musisz dodać ścieżkę do tych frameworków w "Ścieżkach wyszukiwania bibliotek" celu twojego głównego projektu.
źródło
Jeśli próbujesz przetestować framework:
Przejdź do celu testowego -> Faza kompilacji -> Utwórz nową fazę kopiowania plików -> Wybierz frameworki -> Dodaj wszystkie rekurencyjnie używane frameworki
źródło
Jeśli przypadkiem masz
To jest sposób na zrobienie tego.
źródło
Nie miało to miejsca w moich projektach sprzed Xcode 8, ale po uaktualnieniu do Xcode 8 wprawiło mnie to w zakłopotanie.
Opublikowane tutaj odpowiedzi nie pomogły w rozwiązaniu moich problemów. Dla mnie po prostu porzuciłem te testy, ponieważ nie są potrzebne. Więc odznacz przyciski testowe:
A teraz błąd zniknął.
źródło