« 2009年11月 | トップページ | 2010年1月 »

2009年12月の5件の記事

2009年12月22日 (火)

[コラム] どうやって DateTime.Now を含むメソッドをテストする?

TDD Boot Camp でも、 演習の後半に出てきました。 テスト対象のメソッドが、 現在時刻や時間経過に依存しているときは、 どうやったら上手くユニット テストが書けるでしょう?
テストしたい時刻になるまで、 あるいは、 テストしたい時間が経過するまで Sleep() しますか? そんなことをしていたら、 DateTime.Now に依存するメソッドのテストに、 ヘタをすると丸一日掛かってしまうかもしれませんね。

DateTime.Now の値を自由にコントロールできれば、 問題は解決するでしょう。
製品コードの中で、 現在時刻を提供する部分を切り出してしまい、 テストのときはそこをスリ換えてしまうというテクニックがあります。
・ 製品コードに、 現在時刻を提供するクラスを作って、 テストのときはクラスを入れ換える。 (ちょっと大げさだけど、 大きなアプリケーションならけっこう現実的。)
・ 製品クラスの中で、 現在時刻を提供するメソッドかプロパティを切り出して、 テストの時にはそこをすげ替える。
・ 製品クラスの中に、 #if DEBUG で括って、 時刻を調整できるメソッドを仕込んでおく。
・ (…ほかにも方法はあるでしょう。)

以下、 2番目のテクニックを紹介します。

続きを読む "[コラム] どうやって DateTime.Now を含むメソッドをテストする?"

| | コメント (0) | トラックバック (0)

2009年12月21日 (月)

[イベント] TDD Boot Camp、いっぺんに 30組以上がペアプログラミングする壮観!

12月 19日に開催された "TDD" Boot Camp に参加してきました。 60人を超える参加者がペアプロで TDD する光景は (自分もペアプロしてたのでチラっとしか見てませんが)、 なんとも壮観でした。 何人もの人と知り合うことができて、 とても楽しかったです。 電車の都合で、 懇親会には 15分くらいしか居られなかったのが残念でした。

きっと .NET Framework 組は肩身の狭い思いをするだろうなぁとおもっていたのですが、 チーム分けの最初の時点で 10名、 そのあと 2名加わってくださって 12名になり、 6人一組の C# チームが 2つ出来ました。 小島さんがコーチをしてくださって、 ペアプロで TDD に挑戦です。 開発環境は全員が Visual Studio 2010 beta2 日本語版。 (MS さんのブースにあったデモ機も含めると VS2010 が 15台くらい集まってたことになるんじゃないかな。)

.NET Framework 視点でのイベントレポートは、 MS 長沢さんが詳しく書いてくださってます。 ( ⇒ ITmedia オルタナティブブログ とか、 MSDN のブログ とか、 MSKK のアジャイル開発支援サイト)
ので、 ここではセッションの写真を数枚だけ載せておくだけにします。 携帯電話のカメラなので画質が悪いですけど。

続きを読む "[イベント] TDD Boot Camp、いっぺんに 30組以上がペアプログラミングする壮観!"

| | コメント (2) | トラックバック (0)

2009年12月16日 (水)

[NEWS] NUnit 2.5.3 リリース、 .NET 4.0 に対応

20091216_nunit253_01 12月 12日付けで、 NUnit Version 2.5.3.9345 が公開されました。
この版から、 テストを .NET Framework 4.0 上で実行できるようになりました。

リリースノート ⇒ NUnit.org : Release Notes (英文)
ダウンロード ⇒ Launchpad : NUnit V2 2.5.3

※ プロジェクトの編集ダイアログで、 ランタイム バージョンの選択肢に 4.x が増えています。

リリースノートによれば、 .NET 4.0 対応の他にも次のような変更があるそうです。 (一部抜粋)

  • nunit-agent-x86.exe : 新機能。 nunit-x86.exe または nunit-console-x86.exe でテストするとき、 別プロセスで走らせることができる。
  • 新しい構文 : Contains.Substring() と Contains.Item()
  • 抽象クラスにも TestFixtureAttribute を付けられるようになった

| | コメント (0) | トラックバック (0)

2009年12月13日 (日)

[コラム] VS2010b2J (MSTest) で、 Silverlight 3 のロジックを TDD する

[ summary ]
  1. Using the unit test feature (MSTest) of VS2010 beta2 (Japanese), it's possible to test the logic included in the Silverlight 3 project.
  2. As for the wizards who helps the unit test that VS2010b2J has, some functions don't work normally.
  3. The unit test can be executed though warning goes out by the project reference.
  4. After the unit test is executed, coverage can be neatly acquired.
  5. Logic of Silverlight 3 can be made by using TDD technique. I hope for the support of Visual Studio to be improved.

Visual Studio 搭載のユニット テスト (MSTest) や、 現在の NUnit は、 通常の .NET Framework のランタイム上で動作します。 Silverlight は、 異なるフレームワーク ファミリーのランタイム上で動作しますので、 互換性はありません。 ここで誤解されることがあるのですが (私も誤解していました)、 しかし呼び出しすらできないというわけではありません。 Silverlight  に依存するコードを .NET Framework から呼び出すとエラーになる、 という意味で非互換と言っているようです。

Visual Studio 2010 では、 標準で Silverlight 3 の開発ができます。 そして標準機能のみで、 Silverlight 3 のロジック部分はユニットテストできます。 この記事では、 そのことを実験し、またその手順を説明します。

※ 以下は、 Visual Studio 2010 beta2 日本語版での結果です。 正規版では異なる可能性があります。
※ なお、 Silverlight 4 beta に対しても、 ほぼ同様でした。

続きを読む "[コラム] VS2010b2J (MSTest) で、 Silverlight 3 のロジックを TDD する"

| | コメント (0) | トラックバック (0)

2009年12月11日 (金)

[コラム] Silverlight 2 / 3 でも、ユニットテスト出来る

Silverlight の ver. 2 と 3 では、 通常の .NET Framework のアセンブリと互換性が無いとされています。 Visual Studio 上でテストプロジェクトを作って、 Silverlight のプロジェクトを参照しようとすると怒られてしまいます。 Silverlight Toolkit には単体テストフレームワークが含まれていて、 これは UI まで単体テストできる優れものですが、 いかんせん IE を起動してその上でテストを走らせる仕組みになっているので、 TDD のリズムからはほど遠いものです。

Visual Studio 組み込みのユニットテスト (MSTest) や NUnit から、 サクっと単体テストすることはできないものでしょうか…?

続きを読む "[コラム] Silverlight 2 / 3 でも、ユニットテスト出来る"

| | コメント (0) | トラックバック (0)

« 2009年11月 | トップページ | 2010年1月 »