2017-07-28 4 views
0

すべてのテスト後にシミュレータをリセットしようとしています。私は、それを行うための最善の方法を発見したSwift:シェルコマンドを実行してシミュレータをリセットする方法

xcrun simctl erase all 

を実行することですが、私はそれを実行するために迅速なファイルにシェルコマンドを追加する方法がわからない 。

私はuが 助けてくださいを見つけていない識別子を\プロセス、

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 
    } 

を試みたが、エラーが発生しました。 各テスト後にシミュレータをリセットしようとしています。

特定のアプリケーションをシミュレータからコマンドラインからアンインストールできますか?または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

これは良い提案ですが、その回避策です。私は最初にシェルコマンドでそれをやろうとしますが、すべてが失敗したら、新しいフレームワークを探検してください。 – Vinayaka

+1

テストを実行しているホストから特定のシェルコマンドを実行する必要がある場合は、SBTUItestTunnelに沿って開発した別のツールである[SBTUITestTunnelHost](https://github.com/Subito-it/SBTUITestTunnelHost)を検討してください。 UIテストターゲットから任意のシェルコマンドを実行できます。 –

+1

テストにプレビルドステップを追加しました。 Edit Schemeに移動し、テストの横にある三角形をクリックして、+事前ビルドステップを追加します。 - > xcrun simctl uninstall booted com.XYZ.client.main – Vinayaka

関連する問題