CocoaプログラムのGUIのテストをいくつか書きたいと思います。
Cocoaアプリ用の優れたGUIテストフレームワークはありますか?私が見つけた唯一のものはSquishで、2.400€で私の予算をはるかに超えています…</ p>
何か案は?Cocoa GUIをどのようにテストしますか?
CocoaプログラムのGUIのテストをいくつか書きたいと思います。
Cocoaアプリ用の優れたGUIテストフレームワークはありますか?私が見つけた唯一のものはSquishで、2.400€で私の予算をはるかに超えています…</ p>
何か案は?Cocoa GUIをどのようにテストしますか?
「Cocoa GUI のテスト」が何を意味するかによって異なります。
MPW に含まれている古い仮想ユーザーツールのようなツールが必要な場合、それらはほとんどありません。Squish や Eggplant などのツールが表示されます。
アプリケーションのヒューマン インターフェイスの単体テストを作成する場合は、ユーザーが対話できる適切な接続を (フレームワークに従って) 作成している限り、それを信頼する「信頼するが検証する」アプローチに従うことをお勧めします。フレームワークで適切に。つまり、モデルとコントローラー コードがビューに正しく接続されていることを確認することで、ほとんどのテストを実行できます。
私のブログでは、特に Cocoa でこれを行う方法の例をいくつか書いています。1 つはtarget-actionで構築されたユーザー インターフェイスをテストするためのもので、もう 1 つはCocoa bindings で構築されたユーザー インターフェイスをテストするためのものです。(もちろん、2 つのテクノロジは排他的ではないことを覚えておいてください。Cocoa バインディングを介して管理されるテーブル ビューでドラッグ アンド ドロップを実行する場合は、データ ソースと、おそらく target-action を介して接続されたデリゲートも必要です。 .)
私が単体テストを作成しないのは、通常、スーパービュー内のコントロールの配置またはタイプです。ただし、正しく取得して維持することが重要な場合もあります。その場合、コントロールの適切なプロパティを照会し、標準のアサーションを使用してそれらを検証するだけです。
私がほとんどやらないことは、「イベントをシミュレートする」コードを書くことです。これまでに最も近い方法は、偽のドラッグ情報オブジェクトを構築し、それをアウトライン ビュー データ ソースに渡して、ドラッグが正しく処理されるようにすることです。
Macintosh用のGoogleのツールボックスをご覧になることをお勧めします。いくつかの優れた機能の中でも、NSViewとCALayersの状態とレンダリングテストの非常に優れたセットが追加されています。単体テストでは、ビュー/レイヤーの状態またはレンダリングされた画像が保存された(名前で)テンプレートと一致することを表明します。テンプレートがテストバンドルに存在しないか、保存されたバージョンと一致しない場合、レビューのために新しいエンコードされた状態またはレンダリングされたTIFFが生成されます。GTMは、状態のエンコードとレンダリングを行うためのNSViewとCALayerのカテゴリを提供します。明らかに、独自のNSViewまたはCALayerサブクラスでこれらのカテゴリをオーバーライドして、関連する状態(NSCoderプロトコルを使用)またはレンダリングをエンコードできます。
また、(簡単に)プログラムで主要なイベントを送信し、単体テストを使用して実行ループを実行でき、OSXとiPhoneの両方で単体テストをサポートします。
とりわけ Apple Accessibility API を使用して従来の GUI オートメーション ライブラリを作成するオープン ソースの Python パッケージを作成し、Cocoa GUI の可視性と対話性を提供します。PyATOM ホームページ