クラシックASPサイトの自動QAテストを行う人はいますか?私はWatInとMBUnitを調べ始めましたが、テストを構成するための最良の方法がわかりません。
3 に答える
新しい WatiN 2.0 ベータ 1 は、テスト クラスを構築するのに役立ついくつかの基本クラスを提供します。
基本的には、ページごとにクラスを持つことになります (WatiN.Core.Page クラスを継承します)。これらのページ クラスでは、アクセスする各コントロールのプロパティを追加します。何かのようなもの:
public Button OkButton
{
get { return Document.Button("okbuttonId");
}
さらに複雑なアクションをページにラップするメソッドを作成できます。例えば:
public void AddPerson(string name, string email)
{
/// logic goes here tp click on NewButton, set the textfields and click on OkButton
}
これらのページ クラスには、要素を 1 か所で定義できるという利点があります。
テスト コードでは、次のようにページ クラスを作成できます。
using(var ie = new IE("www.somedomain.com/person"))
{
var page = ie.Page<PersonDetailPage>();
page.AddPerson("J. Doe", "jdoe@example.com");
// Do some Assert
}
コードの構造化に役立つもう 1 つの興味深い基本クラスは、Control クラスです。ASP を使用する場合、レンダリングされたページの 1 つの html 要素だけにレンダリングされないコントロールを使用します。代わりに、多くの場合、Div 要素に含まれる要素の構成になります。独自のコントロール クラスを作成して Control を継承すると、コントロール (html) の内部と動作をラップできます。これにより、ページ クラスでコントロールを簡単に再利用できます。コントロールをインスタンス化する方法の例に従います。
var calendar = Document.Control<CalendarControl>("calendarId");
これにより、ページとコントロールをどのように構成できるかについての洞察が得られることを願っています。
ジェローン
FWIW、私たちは過去3年間、Web統合テストにWatiNとMbUnitを使用してきました。
テストを3つのプロジェクトに分けました。
QA.Framework:テストフィクスチャとさまざまなカスタムMbUnitおよびWatiN拡張機能を設定するためのグルーコードが含まれています。
QA.SiteMap:サイトのさまざまなドメインと部分に対応する名前空間に階層的に配置されたPageクラスとControlクラスが含まれています。このプロジェクトは、Webサイト構造の主要部分からテストを切り離すのに役立ちます。あなたはそれをサイトのモデルと考えることができます。
QA.Tests:名前空間に階層的に配置された実際のテストが含まれています。テストでは、必要に応じてSiteMapとFrameworkを利用して、Webサイトと対話します。このように、各テストに同じボタンIDが何度も含まれている場合よりも、コードの重複がはるかに少なくなります...
ジェフ。
Watirで ASP サイトをテストしました。テストを構造化する方法を探している場合は、WatirCraft フレームワークをご覧ください。