2016-11-18 38 views
0

XCTestを初めて使用しているため、10個のテストケースがあり、それぞれのテストケースが相互依存しているアプリ用のサンプルプロジェクトが少々あります。私のアプリが終了し、次のメソッドを呼び出している各テストケースの後にテストスーツは、私はそれがアプリを閉じるにはしたくないが、それはテストケース1は、事前にXCTestの各テストケース終了後にアプリの終了を停止する

感謝を終えた同じ場所から継続してい

+0

私の問題は実際には異なります。アンドロイドデバイスからアンドロイドデバイスのアプリを持っています。例えば、アンドロイドデバイスから「HI」メッセージを送信します。私は2つのデバイスの間で切り替える必要がありますので、私は初期状態で関数を別のメソッドに分割する必要があります – user3724559

答えて

0

これは、xcode UIテストで一連のテストケースがわからないため、テストケースを実行するためにアプリケーションを1回起動するのは悪い考えです。

しかし、あなたがそれをひどく望むなら、ここに解決策があります。速い2.2と2.3では、私はこの種の要求に対して、

dispatch_once 

を使用します。テストケースクラスで

、私はあなたがここに)(dispatch_onceを使用する必要が

XCUIApplication.launch() method in setUp() method. 

を使用すると思います。このdispatch_onceをXCUIApplication.launch()に使用すると、これはアプリケーションを1回だけ起動します。ここ

は、SWIFT 2.2および2.3のためのソリューションです:

private static var launchAppOnce:() = { 
    let app = XCUIApplication() 
    app.launch() 
    //do some code if you needed after launch app before run test cases. 
}() 

struct Static { 
    static var dispatchOnceToken: Int = 0 
} 

override func setUp() { 
    super.setUp() 
    continueAfterFailure = false 
     _ = urclassname.launchAppOnce 
} 

override func tearDown() { 
    super.tearDown() 
} 

は、テストケースクラスで上記のコードを使用します。 これは、アプリケーションを1回だけ起動し、前のテストケースを終了した場所から次のテストケースを開始します。

+0

あなたは解決策を持っていない場合は、更新された答えを確認してください。はいの場合は回答を投稿してください。 – noor

1

テストは互いに独立している必要があります。 Xcodeテストの実行順序のアルゴリズムはいつでも変更できます。 1つのテストが失敗した場合、次のテストの状態が間違っており、後続のすべてのテストが失敗し、誤ったフィードバックが返される可能性があるため、お互いに依存するテストが脆弱なシステムです。

お互いに依存するテストが必要な場合は、すべてのコードを複数のアサーションを持つ1つのテストに入れてください。 continueAfterFailureをtrueに設定することをお勧めします。

関連する問題