我有一個問題,Xcode IDE 6沒有正確檢測到我的swift單元測試用例。當我運行單元測試時,所有的測試都被執行了。Xcode 6編輯器無法識別單元測試
但是在編輯單元測試的IDE中無法識別。我必須運行整個單元測試套件才能運行單個測試。
我想不出我是如何避免這個故障。
我有一個問題,Xcode IDE 6沒有正確檢測到我的swift單元測試用例。當我運行單元測試時,所有的測試都被執行了。Xcode 6編輯器無法識別單元測試
但是在編輯單元測試的IDE中無法識別。我必須運行整個單元測試套件才能運行單個測試。
我想不出我是如何避免這個故障。
問題解決了。我所要做的就是啓動「窗口 - >項目」窗口並刪除「派生數據。索引後所有測試正在工作。
與此同時,蘋果正在修復Xcode 6.3編輯器中的錯誤。
在我的版本(6.2)下它的文件 - >項目設置 – styler1972 2015-04-01 14:55:18
沒有爲我解決(6.4) – Daniel 2015-08-20 09:12:19
在Xcode 7中爲我工作。必須在刪除派生數據後關閉Xcode,然後重啓。 – 2015-09-29 00:04:52
(因爲您的評論表示您仍然有一個星期後,這個問題,這可能幫不了你,但是......)
我就遇到了這個問題,即增加一個新的(SWIFT) 6.1中的測試不會讓它顯示在「測試導航器」或方案編輯器中 - 重新啓動Xcode解決了問題,現在我可以單獨運行測試。
謝謝,重新啓動並沒有解決我的問題,我也在其他類的swift中。我相信我的項目設置與幾個框架套件和擴展導致這種行爲。 – ChaosSpeeder 2014-11-15 08:41:28
修復了我的問題......哦Xcode ... – lehn0058 2016-10-05 14:47:43
我有一個類似的錯誤(儘管在Objective C中,不是快捷)。如果我爲這個類添加了一個新的測試方法,新的方法不會顯示在測試導航器中,也不會在我運行整個包時執行。我也不會在每個方法旁邊的邊欄中獲得這些點,如果點擊它,只會運行一種測試方法。
唯一解決我的問題是刪除我的整個測試類(暫時保存其他內容)然後重新創建測試類和(也許更仔細?)再次設置構建設置。
對我來說,「修復」是添加一個新的測試。我做了一些廢話:
func testThatNothing() {
XCTAssertTrue(true, "True should be true")
}
當我再次運行測試,在該文件中所有的測試是由編輯認可。我刪除了這個虛假測試,這一切都還好。不幸的是我不得不在每個文件中都這樣做,但至少它是有效的。希望這可以幫助某人。
謝謝。看看我的答案。問題是過了一段時間內部派生的數據文件被搞亂了。您必須在一段時間後刪除它們以執行重新處理或重新索引。 – ChaosSpeeder 2015-03-20 17:07:03
這應該被標記爲答案 – Max 2016-08-04 16:15:38
我有同樣的問題了。只要確保您的每一個測試用例有某種XCTAssert()語句。
func testSomething(){
XCTAssert(true, "Pass")
}
對該文件的任何編輯都適用於我。在文件中保留'XCTAssert'不會自動使它們被Xcode識別。 – 2015-06-03 19:31:30
好笑。我試過了,它沒有像預期的那樣工作,因爲我已經有了名字爲'test'的方法。但是,我在測試文件中有一個私有方法,並且通過評論說測試導航器中的測試再次顯示它們是自測的。然後我取消註釋,一切恢復正常。錯誤。 – JJacquet 2015-12-11 21:38:06
對我來說,倫敦定盤前面加上「測試」
所有方法ie
func arrayResponseCall()
應該是:
func testArrayResponseCall()
謝謝,但命名前綴是所有測試功能的要求。看看我的示例,其中方法名稱是testExample()。從Xcode 6.3開始,這個bug已經被蘋果解決了。 – ChaosSpeeder 2015-06-24 15:54:35
這給我修好了。這應該在文檔中更清晰。我花了一個多小時試圖找到這個bug! – Sethmr 2016-12-21 00:18:34
區分大小寫!我嘗試了30分鐘,直到我注意到我寫了「Test ..」而不是「test ..」 – nablahero 2017-05-30 12:33:22
有時候,你需要做的是等待的Xcode來完成索引的所有文件。對於大型項目,我的單元測試導航器視圖通常是空的,直到完成。
另外,有時您需要從目標中刪除測試類並重新添加它。 – 2015-08-31 09:04:24
我完全的答案是here。
在Xcode 7中獲取單元測試的設置比在Xcode 6中容易一些(不需要將類和方法註釋爲public
)。在導入類名前使用@testable
。
import XCTest
@testable import MyProject
class MyClassTests: XCTestCase {
func testMyMethod() {
let myClass = MyClass()
let sum = myClass.addTwoNumbers(1, 2)
XCTAssertEqual(sum, 3)
}
}
在你的課堂上,你不必做任何特別的事情。
class MyClass {
func addTwoNumbers(a: Int, b: Int) -> Int {
return a + b
}
}
您可能還需要在應用的構建設置下將「包裝」下的「定義模塊」設置爲YES。
又見這些問題的答案:
下面是針對此問題的解決方案很少:
等待一段時間。有時需要花費時間加載鑽石。 在不同文件之間導航,然後移動到它應該出現的相同測試案例。
清理工程,清理生成文件夾乃至刪除派生的數據內容。檢查這個how to delete derived data safely.
退出Xcode並再次打開它。
確保您測試用例的名字開始testFunc_Name
有時候你測試用例文件可能包含比測試用例等功能。在這種情況下,菱形符號不會出現。 Remove such function.
在我的情況下,1,3和5解決方案通常爲我工作。
3.是解決方案! – kmak 2016-04-03 14:25:47
刪除派生數據並重新啓動XCode爲我工作 – eliasbagley 2016-06-03 16:21:23
對我來說,選擇Product->Test
就足夠了,稍等一下。當測試剛剛開始運行時,所有鑽石都可用
確保測試用例名稱以「test」開頭,後面跟着您想要創建的任何名稱(cmd + B)項目。鑽石將出現!!。
只要您更改爲在函數名稱中包含測試,它就會顯示出來。傻我.. – 2017-01-23 10:56:41
當您添加一個新的測試,保存文件(加利福尼亞+ S)和鑽石會出現
我解決了我的問題,只是將private
方法變爲public
。
所以,如果這是你面臨同樣的problema,開關:
private func testString()
到:
public func testString()
我有同樣的問題。尚無解決方案。在測試導航器中,我可以看到圖標運行單個測試。但是,如果我通過單擊這樣一個圖標來運行單個測試,則將執行所有測試,而不是僅單擊我單擊的那個測試。 – 2014-11-04 09:08:55
我的項目越發壯大,越糟糕。我在許多swift文件中沒有IntelliSense。我希望,這些錯誤將會被更多版本的Xcode修復。 – ChaosSpeeder 2014-11-08 18:19:47
認真考慮直接在VIM中工作。 – Aaron 2016-03-02 14:35:33