14

私はユニバーサル 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 には、新しいデバイス タイプ (時計/テレビ/ヘア ドライヤーなど) が登場した場合にこれがうまくスケーリングされないことを考えると、このためのよりエレガントな組み込みがないのは本当に残念です。

4

3 に答える 3

2

デバイス固有のテストをターゲットにするには、プロジェクトのスキームを編集する必要があります。[製品] > [スキーム] > [スキームの編集] の下で、デバイスごとにデバイス固有のテストを選択できます。

スキームエディタ

于 2013-10-28T15:58:10.727 に答える
1

これが私の提案された解決策です。

テストを iPhone 固有のテストと iPad 固有のテストに分割します。

ここで、iPhone または iPad 専用の新しいターゲット (Cocoa Touch Unit Testing Bundle) を追加します。すでに多くの一般的なテストを作成している場合は、現在のテスト ターゲットを複製する方が賢明かもしれません。

次に、ナビゲーターでクラスをクリックして、iPhone 固有のテスト クラスが iPhone テスト ターゲットにのみ含まれていることを確認し、[ユーティリティ] パネルを開きます。[ターゲット メンバーシップ] チェック ボックスを使用して、クラスがどのターゲットのメンバーであるかを設定できます。

ターゲット メンバーシップ パネル

これを拡張するには、2 つのターゲットに異なるスキームを追加して、テストの実行を高速化できます。

于 2013-10-26T00:10:09.097 に答える