2017-07-28 95 views
0

我想在每次測試後重置模擬器。 我發現做到這一點的最好辦法,是執行Swift:如何通過運行shell命令來重置模擬器

xcrun simctl erase all 

,但我不知道如何在一個迅速的文件來執行它添加一個shell命令。

我試圖

import Foundation 
func shell(_ args: String...) -> Int32 { 
    let task = Process() 
    task.launchPath = "/usr/bin/env" 
    task.arguments = args 
    task.launch() 
    task.waitUntilExit() 
    return task.terminationStatus 
    } 

但得到一個錯誤,方法U \標識未發現 請幫助。 我試圖在每次測試後重置模擬器。

我可以從命令行從模擬器中卸載特定應用程序嗎?或任何其他方式之間的每個測試,在tearDown()

回答

3

我有一個類似的問題,並能夠解決它與SBTUITestTunnel。 我選擇使用這個框架,因爲我還必須在測試應用程序和我的實際應用程序之間進行通信以配置測試狀態。

通過實施SBTUITestTunnel,您可以指定啓動選項,您需要的是SBTUITunneledApplicationLaunchOptionResetFilesystem。

app.launchTunnel(withOptions: [SBTUITunneledApplicationLaunchOptionResetFilesystem]) { 
// do additional setup before the app launches 
// i.e. prepare stub request, start monitoring requests 
} 

我建議看看SBTUITestTunnel,因爲它可以讓你做一些其他非常強大的事情。

+0

這是一個很好的建議,但它是一種解決方法。我將首先嚐試通過shell命令來完成,如果全部失敗,請探索新的框架。 – Vinayaka

+1

如果您需要從運行測試的主機運行特定的shell命令,您可以考慮[SBTUITestTunnelHost](https://github.com/Subito-it/SBTUITestTunnelHost),這是我沿着SBTUItestTunnel開發的另一個工具。它允許從UI測試目標運行任意shell命令。 –

+1

我在測試中添加了預建步驟。轉到編輯方案 - >單擊測試 - > +旁邊的三角形,並添加預構建步驟 - > xcrun simctl卸載引導com.XYZ.client.main – Vinayaka

相關問題