2016-07-13 22 views
0

Xcode UIテストを使用して、アプリケーション内の特定のUI要素が実行されている場合に実行するコードを実装します。私のアプリはログインしている状態で、現在ログインしているユーザーをログアウトしたいのですが、私はこのペーパーバッグからの脱却を提案する文書を見つけることができませんでした。Xcode UIテスト:条件付きでテストを実行する

XCTAssertを使用して(要素が存在しない場合は私のテストが直ちに失敗する)、XCTExpectationを使用すると、2つの可能なパスが表示されます(要素が存在しない場合は、 t present)。アプリが特定の状態にある場合、別のコードを実行するためのより簡単な方法が必要です。コードでそれを置くために

私はこのような何かを探しています、:

if let signOutElement = app.collectionViews.staticTexts["Sign Out"] { 
    signOutElement.tap() 
} 

ああ、これは動作しません。

+1

私の経験では、通常、かなり厳しい状態でテストが行​​われます。アプリケーションをコードの特定の部分をテストできるようにします。この場合、ユーザーはログインしている状態になっているので、ログアウトする必要があります。 理論的には、このような場合に頻繁に発生するページ上の何らかの種類のタイマーでこれを達成できますが、サインアウトを探すこともできますが、必ずしもテストimoを行う必要はありません。 –

答えて

5

テスト中に条件を使用しても問題はありません。あなたのコードの問題は、Swiftの観点からはナンセンスだということです。式がオプションを返さないので、if letは意味がありません。結局のところ、法律上のスウィフトと話をしなければならない。

なぜこのようなことを試してみませんか?

if app.collectionViews.staticTexts["Sign Out"].exists 
+0

また、XCUIElementにexistsメソッドがあることに気付きました。答えをありがとう! –

+0

正解でない場合は、私の答えを受け入れないでください!私はここで 'カウント 'がうまくいくとは思っていません。それが動作するように私のコードを修正してください! – matt

+0

Yikes、それについて強く感じたら! –