2015-08-14 71 views
2

我有一個使用我寫了一些Objective-C代碼迅捷的測試:斯威夫特測試鏈接錯誤

class ParserServiceTest: QuickSpec { 
    override func spec() { 
     var x : MyClass? // this works 
     x = MyClass() // this does not 
    } 
} 

當我嘗試建立的項目中,我得到的錯誤信息:

Undefined symbols for architecture i386: 
    "_OBJC_CLASS_$_MyClass", referenced from: 
     __TTSf4d___TTSf4g___TFC11MyProjectTests17ParserServiceTest4specfS0_FT_T_ in ParserServiceTest.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

回答

1

您需要將Objective-C包含在測試目標中。在您的目標列表中,選擇「...測試」目標,然後選擇「構建階段」窗格。查看「Compile Sources」或「Link Binary With Libraries」(取決於您的代碼是來自源代碼還是庫),並確保您需要的所有文件都在那裏。你需要爲可執行項目做的大部分事情,你也需要爲你的測試項目做。

在文件檢查器實用程序面板(右側面板)中,還可以將目標成員資格添加到單個文件。

+0

如果有人努力尋找這個設置:你可以在'Build Phases'下找到它,*在* Build Settings下找不到*。 – Bastian

+0

編輯包括。謝謝。 –

+0

如果我使用'swift package init'啓動項目,我該怎麼做? – TrungDQ