2016-09-22 37 views
7

我在我的單元測試.pch文件中有以下內容,以允許我的單元測試爲本地化文件找到合適的包,並且在升級到Xcode8之前這一切都正常工作。Xcode 8宏的模糊擴展NSLocalizedString

#undef NSLocalizedString 
#define NSLocalizedString(key, comment) [[NSBundle bundleWithIdentifier:@"Tests-Unit"] localizedStringForKey:(key) value:@"" table:nil] 

現在,我得到警告

Ambiguous expansion of macro NSLocalizedString 

這可以解釋爲什麼我的單元測試失敗,因爲他們無法找到本地化的字符串值了。

任何想法有什麼不對?我現在需要做些什麼改變嗎?

編輯: 我有一種感覺它有事情做與2個目標即一個項目,一個用於單元測試是我們有它設置的方式我所有的源文件之中。我試圖清理它,並移除了單元測試目標我所有的源文件,並添加了

@testable import ProjectName 

而不是一個單元測試文件能夠訪問我的代碼進行測試,但現在我越來越

File 'MyFile.swift' is part of module 'ProjectName'; ignoring import. 
+0

我遇到同樣的問題。你找到了解決方案嗎? – nonamelive

回答

0

我最終得到了這一切再次合作。

假設我們的項目名爲熊貓它包含Obj-C和Swift文件。所有這些文件都在我們的熊貓PandaTests目標。

STEP 1:確保所有文件有正確的目標會員即熊貓目標:只有源文件,開發框架,圖片等,並PandaTests目標:只有測試文件,測試框架,模擬數據等

第2步:確保您熊貓項目有構建設置 - >啓用可測性設置爲Yes

第3步:確保您PandaTests項目有構建設置 - >產品模塊名稱設置爲PandaTests

第4步: 按住Option按鈕,然後點擊Product,做一個很好的清潔。您應該看到一個Clean Build文件夾選項。

步驟5: 對於Swift單元測試,請添加@testable import Panda。由於我們現在已經從PandaTests目標中刪除了所有源代碼文件,因此單元測試需要訪問我們項目文件的方式。這使得我們的Swift單元測試可以訪問我們的Panda-Bridging-Header.h中包含的所有Swift文件和Obj-C文件。

0

看起來像下面是解決了這個問題,但不知道有什麼副作用。

的Xcode構建設置,並設置

其他C標誌-Wno曖昧宏

HTH

+1

通過消除靜音來修復警告通常不是一個好主意。 –