2015-10-27 11 views
6

Mam projekt, w ramach którego stworzyłem dynamiczną strukturę. Wewnątrz samej ramy, nie testuje Framework, mam następujący plik:Importuj XCTest do dynamicznego szkieletu

import Foundation 
import XCTest 


public func assertThrowsException(function:() throws -> Void) { 
    XCTAssertTrue(doesItThrowException(function)) 
} 


public func assertDoesNotThrowsException(function:() throws -> Void) { 
    XCTAssertFalse(doesItThrowException(function)) 
} 


private func doesItThrowException(function:() throws -> Void) -> Bool { 
    do { 
     let _ = try function() 
    } catch { 
     return true 
    } 
    return false 
} 

Są metody użytkowych twierdzić, że Clojure jest podnoszenie wyjątek. Ma nadrobić brakujące XCTAssertThrows Swift().

Oczywiście muszę zaimportować framework XCTest, aby móc korzystać z metod XCTAssert *. Ale nie jestem w stanie tego osiągnąć. Ciągle pojawia się błąd, że struktura o tej nazwie nie jest dostępna.

Czy masz pojęcie, jak skutecznie zaimportować XCTest?

Dziękuję bardzo

Odpowiedz

11

Zabrakło mi do podobnego problemu i używane ustawienia budować od Nimble projektu. Aby rozwiązać problem:

1: Dodaj do innych flagi Linker:

-weak_framework XCTest -weak-lswiftXCTest

2: Dodaj do ramowych ścieżek wyszukiwania:

$(DEVELOPER_FRAMEWORKS_DIR) $(PLATFORM_DIR)/Developer/Library/Frameworks

Teraz dynamiczne ramy może importować XCTest.

Sidenote: Chciałem napisać coś podobnego. W końcu utworzyłem mini-framework for unit testing error handling in Swift, może ktoś uzna to za przydatne. Działa zarówno z CocoaPods, jak i Carthage.

+0

Działa doskonale, dzięki! – phatmann

+0

To działa idealnie, dziękuję! Czy nie powinna to być zaakceptowana odpowiedź? @ jollyr0ger – hybridcattt