NUnitを使おう その2

NUnitを使って効率よくテストを行うためには、テストしやすい設計にしておくのが大事だとおもた。本当はテストコードを一番最初に書くべきなんだな〜

ちょいメモ

  • DB関連のコードをテストする場合にはトランザクションをテストコード側で保持しておく(テスト終了→ロールバック)という流れ。ということで環境に影響を与えずにテストを行うことが出来る。
  • テストでConfigurationManager.AppSettingsのアプリケーション設定を参照する場合は、テストコードのアセンブリと同じフォルダに(テストアセンブリ名).dll.configとconfigファイルを作っておかないといけない。アプリケーションとテストコード用にそれぞれ.configファイルを用意しないといけない。

ダブルポスト大作(ボタンの二度押し等)

http://d.hatena.ne.jp/itaosan/20061225/1167025092
で紹介されてたアスペクトを使う手法がお手軽で(・∀・)イイ!と思ったんだけど、何故か漏れの環境だとコントロールのOnClientClick()が使えなくなってしまう。なぜだ・・・(´・ω・`)ショボーン

あとはJavaScriptでボタンを無効にしたり、ページをフリーズさせたりする方法とか
http://codezine.jp/a/article/aid/769.aspx
しかしJavaScriptはユーザーによって無効にされている可能性があるし。
やはりSession変数あたりにフラグを持たせておくのが一番確実か。するとフラグをおろすタイミングをどうするかという問題が・・・

画像の「人の顔」を自動認識して笑い男マークでマスクしてくれる

http://thelaughingman.net/
SUGEEEEEEEEEEEEEEEEEEE!!!!!
ちなみに写真の顔だけじゃなくて、マンガとかある程度デフォルメされたものでも顔として認識してくれる。いろいろ実験してみると面白いな。

自動テストツール NUnit/NUnitAspを使ってみる

テスト駆動開発とかアジャイルの言葉に挽かれてNUnit/NUnitAspに挑戦してみることにした。

NUnit-GuiからテストコードのDLLを読み込もうとすると、NUnit-GuiがBadImageFormatExceptionを吐いてイメージを読み込んでくれない。
調べてみると、NUnitAspの最新バージョン1.5.1にバンドルされているNUnitは2.2.0で、NUnitの最新バージョンは2.2.9が出てるらしい。さっそくNUnitを2.2.9にアップグレードしてみると、NUnit-Guiは例外を吐かなくなったものの、今度はNUnitASPが動かない。どうやらNUnitAsp1.5.1と一緒に使うNUnitは2.2.0じゃないとだめらしい・・・難しいなあ。
NUnitAspは日本語の情報もそんなにないし。海外のForumで.configを弄ってみると良いとか出ていて試してみたけどダメ。TestDriven.NET経由で動かすと動くという情報を知って試しにTestDriven.NET2.0経由で動かすと普通に動いた・・・(;´Д`)ナンデ?

あと注意ポイントがいくつか

  • テストコードを記述するクラス自体をpublic宣言すること。コンストラクタもpublicで宣言する。
  • NUnitAspの場合は[SetUp] [TearDown]属性は使わない。WebFormTestCaseを継承する場合void SetUp()とvoid TearDown()をオーバーライドする。
  • TestDriven.NETはVisual C# Express Editionでは使えないらしい?

ためしにいくつかテストコードを書いてみたけど、なかなかよさそうな感じ。特にTestDriven.NETを使うとVSからシームレスにテストを実行できるのがマジ便利。これを使いこなせれば開発効率とコードの品質はかなり向上するんじゃなかろうか。

参考

NUnit
http://sourceforge.net/projects/nunit
NUnitAsp公式(英語)
http://nunitasp.sourceforge.net/]
TestDriven.NET(英語)
http://www.testdriven.net/
NAgile開発 NUnitAspによるWebフォームのテスト
http://www.nagile.com/nuke/Portals/0/NUnitAsp.pdf
.NET開発のTipsなぐりがき! NAgile
http://rararahp.blog69.fc2.com/blog-category-3.html
NUnit Ver2.0ユーザーガイド
http://www.objectclub.jp/community/XP-jp/xp_links/NUnitUsersGuidebookVer2.pdf
Japan.internet.com デベロッパー - NUnitAsp の高度な使い方
http://japan.internet.com/developer/20051005/26.html
NUnitAsp1.4.1 導入ガイド
http://www.itsol.co.jp/columns/TC-004/TC-004.html
NAgiler 航海日誌
NUnitAsp資料とサンプルコードの公開:http://www.takakuro.net/blogs/nagile/archive/2005/07/07/59.aspx