方法 : 要求レベルのプラグインを作成する
更新 : 2007 年 11 月
要求は、Web テストを構成する宣言ステートメントです。Web テスト プラグインでは、Web テストで主要な宣言ステートメントの外部にあるコードを分離し、再利用できます。プラグインを作成し、要求を含む Web テストに追加するのと同じように、個々の要求にも追加できます。カスタマイズされた要求プラグインは、Web テスト中の特定の要求の実行時にコードを呼び出す方法を用意します。
メモ : |
---|
Visual Studio 2005 Team Edition for Testers では、テスト内のすべての要求に対して実行されるテスト レベルの要求プラグインを作成できました。Team System 2008 Test Edition では、テスト レベルのプラグインは要求プラグイン インターフェイスをサポートし、テスト内のすべての要求に適用されます。Team System 2008 Test Edition は、Visual Studio 2005 で作成された要求プラグインを検出すると、そのプラグインをテスト レベルのプラグインに変換します。 |
すべての Web テスト要求プラグインには、PreRequest メソッドと PostRequest メソッドがあります。要求プラグインを特定の HTTP 要求にアタッチすると、その要求の発行前に PreRequest イベントが発生し、応答の受信後に PostRequest が起動します。
カスタマイズされた Web テスト要求プラグインは、WebTestRequestPlugin 基本クラスから独自のクラスを派生することによって作成できます。
カスタマイズされた Web テスト要求プラグインは、記録した Web テストで使用できます。カスタマイズした Web テスト要求プラグインを使用すると、最小限のコードを記述するだけで、Web テストをより高度に制御できるようになります。ただし、コード化された Web テストでそれらを使用することもできます。詳細については、「方法 : コード化された Web テストを作成する」を参照してください。
要求レベルのプラグインを作成するには
Web テストを含むテスト プロジェクトを開きます。
テスト プロジェクトを作成する方法の詳細については、「方法 : テスト プロジェクトを作成する」を参照してください。
同じソリューションで、要求プラグインを格納するクラス ライブラリ プロジェクトを作成します。
作成したクラス ライブラリ プロジェクトを選択し、[参照の追加] を右クリックします。
[.NET] タブで、[Microsoft.VisualStudio.QualityTools.WebTestFramework] をクリックします。[OK] をクリックします。
テスト プロジェクト内を右クリックし、[参照の追加] をクリックします。
[プロジェクト] タブで、新しいクラス ライブラリ プロジェクトを選択します。[OK] をクリックします。
プラグインのコードを作成します。まず、WebTestRequestPlugin クラスから派生する新しいパブリック クラスを作成します。
PreRequest イベント ハンドラと PostRequest イベント ハンドラのいずれかまたは両方にコードを実装します。
このコードを記述した後で、新しいプロジェクトをビルドします。
要求プラグインを追加する Web テストを開きます。
プラグインを追加する要求を右クリックし、[要求プラグインの追加] をクリックします。
[Web テスト要求プラグインの追加] ダイアログ ボックスが表示されます。
[プラグインの選択] から、新しいプラグインを選択し、[OK] をクリックします。
プラグインは、HTTP 要求の子フォルダである [要求プラグイン] フォルダに追加されます。
使用例
カスタマイズされた Web テスト プラグインを作成するには、次のコードを使用します。
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.VisualStudio.TestTools.WebTesting;
namespace RequestPluginNamespace
{
public class MyWebRequestPlugin : WebTestRequestPlugin
{
public override void PostRequest(object sender, PostRequestEventArgs e)
{
MessageBox.Show(e.WebTest.Context.AgentName);
}
public override void PreRequest(object sender, PreRequestEventArgs e)
{
MessageBox.Show(e.Request.Url);
}
}
}