2014-01-09 73 views
1

我試圖將最小BLE測試設備放在一起,其中測試控制着BLE連接的兩端。被測代碼運行在設備上(iOS7模擬器不支持BLE)並使用CBCentralManager。連接的外圍端將位於MacBook Pro上。從設備上運行的iOS XCTestCase調用OS X代碼

iOS XCTestCase在Xcode下的同一臺Mac上運行。

我想讓我的測試代碼在XCTestCase中運行,以便能夠控制BLE連接的外圍端。

因此典型的測試可能是:

1)XCTestCase被測調用代碼,以使其連接到所述外圍(MAC)。 2)當連接完成時,XCTestCase會導致外設(mac)關閉連接。 3)XCTestCase檢查iOS中測試代碼生成的結果。

所以我的問題是,如何能的iOS XCTestCase通信/控制代碼在OS X(Mac的環境)中運行 一切都在Xcode監督在同一Mac上運行,除了碼錶現爲外周端。

我希望我已經足夠好地解釋了這個場景,並且這是這類問題的正確位置。

我想到的一個想法是在Mac上運行一個web服務器,XCTestCase代碼和外設代碼都會將消息傳遞給對方。更直接的通信會更好。

謝謝。

+0

您確定要對此進行測試嗎?這就像通過實際執行Web請求來測試Web連接(除非我誤解了這個問題)。你不會更好地嘲笑嗎? – Abizern

+0

測試的目標是藍牙低功耗功能,以確保iOS應用程序在連接的中央端的有效行爲。因此,XCTest需要創建/強制條件(例如斷開連接),然後監視App的行爲。例如,以確保App嘗試重新嘗試重新連接。 Web元素(在Mac上運行的本地服務器)僅作爲XCTest控制連接外圍端的方法提出。對於冗長的評論感到抱歉,希望能夠澄清。 – user2196409

回答

1

The iOS XCTestCase is running on the same Mac under Xcode.

這是不正確的。 iOS測試用例不能在mac上運行。它們被注入到應用程序中,並且它們在iOS設備上運行。 Xcode只能監聽一些設備事件。

讓我們簡化這個問題 - 您希望iOS和Mac進行通信。無論是在生產應用程序中還是在運行測試中都無關緊要。 XCTests的工作方式與iOS應用程序的任何其他部分相同,並且可以訪問相同的類。

創建從iOS設備到mac的套接字(或從設備向mac發送HTTP請求)是最簡單的解決方案。如果您希望通信通道雙向工作,原始TCP套接字應該是更好的解決方案。

+0

蘇丹,感謝您澄清XCTests如何工作。我只是要求立即;你有什麼建議在哪裏尋找雙向通信的Raw TCP套接字的例子。我想這是解決問題的唯一方法,因爲我必須跨越操作系統邊界。 – user2196409

相關問題