« [.NET] DI コンテナ "Unity Application Block" | トップページ | [.NET] TableAdapterManager は TransactionScope 内で使用できない »

2008年4月 8日 (火)

[.NET] Silverlight で単体テスト

Chica さんによる ScottGuさんのブログ翻訳 より

Silverlightで単体テスト
Silverlight 2 のベータ 1 リリースにおける重要な機能に API レベルおよび UI レベルの両方で単体テストを実行できる単体テストユニットがあります。

Silverlight 単体テストユニットに加え、 それによりビルドされた 2,000 もの単体テストソースも出荷しました。 これは Silverlight コントロールソースを自動的にカバーしており、 ライセンス許可されています。 ( コントロールソースを、 修正し、 動作を実証する単体テストを起動させ、 そのコントロールをお好きな形で再出荷することができます。 )

…ぇ、 え、 え~っ !? (@@;

・ UI レベルの単体テストですと~ !?
・ コントロールのソースを開放 !?

リンク先の Shawn Burke's Blog

Silverlight 2 Beta 1 Controls Available, including Source and Unit Tests

You can also download the Silverlight 2 Beta 1 Controls project package now.  The code in this package exactly matches the controls included with the Silverlight 2 Beta 1 SDK download (for example, TextBox, Image, etc. are implemented directly in the runtime).

Simply download the package and unzip it somewhere on your machine using the self-extracting zip.  Once you've done that, launch the project using the "MixControls.sln" solution in VS 2008.

さっそくダウンロードして、 zip を展開。
なんと! Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll だのといった、テスト系とおぼしきバイナリは入ってるけど。 コントロールのバイナリが見当たりません
20080408_mixcontrols_02 ソースの MixControls.sln を VSTS 2008 で開いてみます。 コントロールとテストのプロジェクトがずら~っと出てきます ( 右の画面 )
コントロールのプロジェクトファイルの設定を確認してみます。 バイナリの出力先は、 Src\ClientBin に設定されてます。 そのフォルダの中身は、 確かに空です。
ビルドしてみます。 あっさり通ります。 Src\ClientBin にバイナリが出来上がります。

20080408_mixcontrols_01 テストプロジェクトを実行してみます。 ユニットテストとしての実行ではなくて、 普通にプロジェクトを実行すると、 テストページが生成されて、 IE が立ち上がります。  ( 右の画面は、 Controls.Extended.Test を実行して立ち上がった IE7。 テストを実行中です。 )

・ MS の製品 ( beta とはいえ、 Silverlight は MS から無償で提供される "製品" ですよね ) で、 いきなりソースコードが ( しかも、 ソースコードだけが ) 公開されるなんて、 今までにあったっけ?
・ アーカイブを落としてきて、 適当に展開して、 何も考えずにビルドさえすれば通る。 そんなソースコードが、 オープンソースの世界でもどのくらいの割合で存在してることか?

というわけで、 かなりのカルチャーショックを受けてます。 ( おかげで、 こんな時間にプログラミングネタを書いてますw )

あ、 もひとつの "UI レベルの単体テスト" というのは、 まだコントロールをインスタンス化してロードするだけみたいです。 ( 上の画面では IE7 を起動して表示していますが、 ブラウザを起動しなくても、 コントロールをテストできるのです。 )
それでもたいしたものでして、 インスタンス化は new するだけの話で簡単ですが、 そのコントロールのインスタンスをロードしてやらんと ( 親 Window とかにロードしたぞ、 と思い込ませて、 初期化処理を実行させないと )、 たいがいのコントロールは、 動かないし、 それこそ寸法も取れなかったりするんです。 ( ← そのため、 テストするにはどうしても画面を出すしかなかった。 …私の技術では f(^^;;; )
また、 将来的には、 UI Automation API を利用するのでしょうね、 マウスクリックやキー入力をシミュレートした単体テストを出来るようにする計画もあるようです。

( 2008/04/08 追記 ) ごめんなさい、 嘘を書きました。 m(_`_)m
今日見たら、 ソリューションに .vsmdi ファイルが無いじゃありませんか。 これでは、 ユニットテストは走りません。 ( 実際、 テストの実行をやっても動かない。 )
昨日、 なにを勘違いしたものやら… けっきょく、 現状の MixControls.sln での単体テストは、 画面 ( IE ) を出して行うものだけ、 のようです。

( 2008/04/08 追記その2 ) 詳細な使い方は、 Unit Testing with Silverlight 2 - Jeff Wilcox のあたりに。 …って、 英語だ orz

|

« [.NET] DI コンテナ "Unity Application Block" | トップページ | [.NET] TableAdapterManager は TransactionScope 内で使用できない »

プログラミング」カテゴリの記事

-プログラミング ( Silverlight )」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [.NET] Silverlight で単体テスト:

« [.NET] DI コンテナ "Unity Application Block" | トップページ | [.NET] TableAdapterManager は TransactionScope 内で使用できない »