2016-04-27 10 views
5

Pracuję z Unit Testing w Xcode przy użyciu XCTest dostarczonego przez Xcode w celu C. Wiem, jak importować moduł w Swift, jak poniżej.Co jest alternatywą @testable importowania w Objective C


@testable import AppName 

Jaka jest alternatywa w obiektywnych C

+0

Nie możesz po prostu "# importować" ich? A może chcesz uzyskać dostęp do prywatnych metod Celu C? – Tomer

+1

@Tomer: Następnie muszę zaimportować wszystkie pliki, aby skompilować źródła celu UnitTestCase, co nie wydaje się dobrym rozwiązaniem. –

+0

Twój cel testowy jest powiązany z głównym celem. Czego potrzebujesz poza importowaniem pliku .h? –

Odpowiedz

2

@testable nadpisania praw dostępu w systemie SWIFT, co pozwala na przetestowanie internal metod w testach jednostkowych.

Objective-C nie ma takich modyfikatorów dostępu, dlatego nie potrzebujesz @testable i po prostu zaimportujesz moduł normalnie.

Jeśli chcesz przetestować wewnętrzne metody Swift, będziesz musiał napisać swoje testy w Swift.

+0

Zgodnie z dokumentacją Apple "Uwaga: @testable zapewnia dostęp tylko do funkcji" wewnętrznych "; "Prywatne" deklaracje nie są widoczne poza ich plikiem, nawet jeśli używają @ testable. " –

+0

@BabulPrabhakar W porządku, dzięki, naprawiłem to. – Sulthan

2

W Objective C można po prostu #import je, ponieważ nie ma takich ograniczeń dostępu do metody "wewnętrznej" jak w Swift.

Ponadto, w Xcode 6 główny cel powinien być już połączony z celem testowym. Jeśli nie, spróbuj zaznaczyć pole wyboru "Zezwalaj na testowanie aplikacji hosta API" w miejscu docelowym testu> Ogólne> Testowanie. Aby uzyskać więcej informacji, patrz this question.

+0

Pracuję z Functional UI Testing, gdzie muszę wyśmiać obiekty Core-Data, które są używane w aplikacji, dlatego to rozwiązanie nie zadziała w moim przypadku. –

+1

Po prostu #import co? Jeśli pliki Swift nie znajdują się w docelowym teście, nie będą w AppTest-Swift.h, a App-Swift.h nie będzie dostępny podczas kompilacji celu testowego. – Uncommon