UI テストの自動化について話すとき、会話は常に UI オートメーションに行き着きます。それが唯一の選択肢ですか?
個人的には、主な理由の 1 つで、複雑さという理由で好きではありません。あらゆるタイプのアプリケーションに対応できるように設計されています。そのような普遍性は決してタダではありません。UIA は、抽象化の別のレイヤーとかなり複雑な API を導入します。標準パターンは限定されています。カスタム コントロールのサポートには、多くのコーディングが必要です。なぜ誰かがそれを良い選択肢だと考えるのだろうか?
WPF には、UI が視覚要素の階層ツリーである、優れた非常に豊富な抽象化があります。これらの要素は、多くのメソッド、イベント、およびプロパティを公開します。ツリーは、さまざまな参照方法をサポートしています (たとえば、相対ソース構文)。そして、UIA でこれらすべての力を失います。何のために?古い学校のアプリやウェブとの互換性のためですか? まあ、現実的に、誰がそれを必要とするでしょうか? すべての取引のジャックは、誰のマスターでもありません。
Snoop のようなツールは、実行中のアプリケーションに自分自身を挿入し、それを完全に制御できます。コントロール プロパティの値を変更し、イベントを発生させることができます。それで十分ではないでしょうか?いいえ。マウスとキーボードを使用して、ユーザーが行うように、テストで UI とやり取りする必要があります。しかし、それは解決できる別の問題です。
それで、UIA の楽しさについて、私が得られない何かがあるのだろうか?