/ / Dodanie testów jednostek Swift do projektu Xcode z mieszanym językiem - cel-c, kodowanie xx, szybkie, testowanie jednostkowe

Dodanie Swift Unit Tests do projektu Xcode z mieszanym językiem - cel-c, kodowanie xx, szybkie, testowanie jednostkowe

W jaki sposób konfigurujesz testy jednostkowe, aby przetestować klasy Swift dodane do wcześniejszego projektu tylko w Objective-c?

Dodałem klasy Swift do mojego projektu i jestem w stanie pracować z nimi w innych plikach Swift i Objective-c, jednak nie jestem w stanie uzyskać do nich dostępu z moich klas testowych.

Zdanie, które uważam za poprawne, jest prawidłowe @testable import MyAppModuleName co jest dodawane do przykładowej klasy testowej w szablonach Xcode'a. Błąd generowany przez tę linię jest Cannot import module being compiled. Ten błąd występuje w Xcode 7 przy użyciu Swift 2.

Odpowiedzi:

5 dla odpowiedzi № 1

Miałem podobne problemy, pracując w przestrzeni roboczej z mieszanką kodu Objective-C i kodu Swift i chciałem pisać przypadki testowania jednostkowego dla moich plików Swift. Poniżej znajdują się czynności, które podjąłem, aby rozwiązać problem.

  • Ustawię "Włącz testowalność" na "TAK" w ustawieniach budowania projektu
  • Ustawię również "Definiowanie modułu" na "TAK" w ustawieniach budowania mojego projektu.
  • Dla zwykłych plików .swift w moim projekcie powiedz MyApp, Byłem zamierzam napisać przypadki testowe dla, mam obie główny "MyApp"i "MyAppUnitTests"Cele sprawdzone w ramach członkostwa docelowego.

Następnie wybrałem plik (e) testu urządzenia, zadeklarowałem "@testable import MyApp"u góry, pod"importuj XCTest", i tylko sprawdziłem "MyAppUnitTests"w ramach członkostwa docelowego. Oczyszczone, zbudowane i uruchomione i wszystko działało jak czar. Mam nadzieję że to pomoże.


3 dla odpowiedzi № 2

Odpowiedź udzielona przez https://twitter.com/UINT_MIN

W moim przypadku oba cele (aplikacja i testy) miały taką samą nazwę modułu w ustawieniach kompilacji. Zmiana nazwy modułu celu testowego rozwiązała problem.


1 dla odpowiedzi nr 3

@testable import dotyczy sytuacji, gdy próbujesz zaimportować kod z głównego modułu z miejsca docelowego testu. Kod testowy nie powinien być elementem docelowym aplikacji - powinieneś mieć osobny cel testowy. Korzystanie z testów jednostkowych dla szczegółów.