2

(これは TestComplete フォーラムの方が良いかもしれませんが、とにかくここで試してみようと思いました)

TestCompleteを使用したDelphi 2010アプリケーションの自動テストを検討しています。アプリケーションが使用するメイン コントロールは、 TCustomControlから直接派生する独自のカスタム コントロールです。

(参考までに、コントロールは、テキストを含むボックスを表示するダイグラム ツールのようなものです。これらのボックスは選択できます。コントロールは、選択を含めて完全にカスタム描画されます)。

これをより TestComplete に適したものにして、そこからデータを読み取れるようにすることを検討しています (たとえば、どのデータがコントロールにロードされているか、どのデータが選択されているか)。

また、私たちのアプリケーションは MVC アーキテクチャを使用し、インターフェイスを多用していることにも言及しておく必要があります。TestCompletes デバッグ エージェントはインターフェイスに関する型情報を返すことができないように見えるため、インターフェイスからデータを取得できません。これが私たちの問題の根源だと思います

私はこれら2つのアプローチを検討しています:

  1. 現在選択されているボックスに関する情報を返す新しいプロパティをコントロールに追加します。ボックス内のテキスト、画面上の位置、階層パスなど、TestCompletes デバッグ エージェントを介してそれらにアクセスします。

  2. TestComplete 用のカスタム コントロール アドオンの作成を検討してください (Delphi コントロールでこれを実行できるかどうかさえわかりません)。

最初のアプローチの問題は、使用されていない場合、リンカーがプロパティと関数を削除することが多いことです。デバッグ ビルドではなく、テスト用にリリース ビルドを使用したいと考えています。

誰かがこれについて何かアドバイスやこの種の経験を持っていますか?

ありがとう

編集: SDK のヘルプを読みましたが、カスタム コントロール アドオンは .net および WPF コントロールに対してのみ作成できます。

4

2 に答える 2

2

あなたはデバッグ情報について正しいです-あなたはそれをリリースビルドから取り除くことができます。したがって、リリースビルドをテストし、同時に内部にアクセスできます。
この状況に関する注意:「リンカーは、使用されていない場合、多くの場合、プロパティと関数を削除します。」ここでチートして、リンカーにこれらの機能のデバッグ情報を生成させることができます。

  1. ファンシトンを公開します。リンカは公開された要素には触れません。
  2. ファンシトンを仮想化します。リンカは仮想メソッドを除外しません。
  3. コードのどこかで関数を呼び出します。実際に何も呼び出さずにコードに呼び出しを含めるには、次のようにします。
var t:ブール値;
始める
  t:= False;
  t = Trueの場合、
    TheFunctionThatNeverExecutes();
..。
終わり;
于 2010-07-05T09:53:33.417 に答える
2

テスト用にリリース ビルドを使用するという決定を再検討する必要があります。その理由は、TestComplete にはテスト作業を容易にする魔法が必要ですが、この魔法がリリース ビルドに存在することを望まないからです。そのため、テストにデバッグ ビルドを使用しない理由を詳しく説明していただければ、この決定を取り消すための解決策を見つけることができます。その結果、TestComplete のすべての利用可能な機能を明らかにするだけで、コントロールのすべての関連データにアクセスできる可能性があります。

元の質問に戻ります。これらのインターフェイスをラップするいくつかの特別なクラスを作成し、TestComplete でプロパティを使用できるようにすることで、インターフェイスの問題を解決できます。

これらのクラスのインスタンスへのアクセスを一元化する小さな (おそらく見えない) テスト フォームを作成します。(現在はリリース モード リンク) このフォームはデバッグ モードでのみ作成するため、慎重に設計すると、テストに必要な場合にのみ関連するコードにリンクできます。

于 2010-07-01T08:56:04.443 に答える