私はユニバーサル iPhone/iPad アプリケーションを構築していますが、場合によっては UI が大きく異なります (つまり、iPhone では TableView でマスター/詳細パラダイムを使用しますが、iPad では詳細を含むセルで CollectionView を使用しています)。 .
インターフェイスが大きく異なるため、View Controller の単体テストの構築方法が変わります。コレクション ビューでは、セルが正しく構築され、すべての詳細情報が含まれていることを確認するためにテストする必要がありますが、iPhone では、マスター リスト用と詳細画面用の 2 つのテスト セットが必要です。
私の質問は、Xcode 5 と XCTest フレームワークを使用して構築されているユニバーサル アプリケーションで、個々の単体テスト ケース/クラスを特定の物理デバイスで実行することをターゲットにできますか?
ここで同様の質問に出くわしました-iOSユニットテストユニバーサルアプリケーション-しかし、質問者は異なる意図を持っており、古いテクノロジーを使用していました。
UserInterfaceIdiomの個々のテスト関数でチェックを行うようにという推奨事項も見ましたが、それは本当に大雑把に思えます。理想的には、特定のデバイスで実行される特定のテストを指定するか、特定のデバイスのテスト クラス全体を指定できるアノテーションが存在します。
ご提案いただきありがとうございます。
- 編集 -
@TommieCは、スミッジマニュアルの場合、適切なパスと思われるものを私に導きました。電話サイズのデバイス用とタブレット サイズのデバイス用の 2 つの新しいテスト固有のスキームを作成しました。これらのスキーム内で、テスト部分を編集し、コア テストとデバイス固有のテストを追加しました。
次に、jenkins に 2 つのビルド ステップを実行させ、特定のスキームをテストするために適切なデバイスをターゲットにします。このアプローチの欠点は、2 つのビルド ステップです。ただし、jenkins ジョブを分割し、適切なデバイスをそれぞれに接続して 2 つのスレーブで実行し、テストを並列化する予定です。
私の知る限り、これはプロジェクトのスキームにも基づいて機能するため、Xcode Build Services にも適しています。XCTest には、新しいデバイス タイプ (時計/テレビ/ヘア ドライヤーなど) が登場した場合にこれがうまくスケーリングされないことを考えると、このためのよりエレガントな組み込みがないのは本当に残念です。