月別アーカイブ: 2011年2月

現在の通信プロトコルには層がひとつ足りない話

昨日の.NETラボの飲み会で話した「通信プロトコルに層がひとつ足りない」の話をちょっとメモ書き。 Siverlight のサーバーアクセスは WCF だったり、ASP.NET MVC からのデータベースアクセスは Entity Framework だったりする訳ですが、内部的には、TCP/IP を生のプロトコルで通しています。正確には HTTP on TCP/IP ってことで、HTTP プロトコルな訳ですが、alive http であろうと、session 毎に切ってしまう http だろうと、ちとある意味で、アプリケーション層と プロトコル層(TCP/IP層) – 用語は、正確ではないのですが — が直結しているために、データのやり取り(特に Connection や 例外関係)に無理があります。 結論から言うとですね、H さんとか、I さんとか、F さんとか、で … 続きを読む

カテゴリー: 雑談, C# | 1件のコメント

もう LINQ to XML はいらない(電撃戦)

NUnit の説明用に作ってみたのですが、説明にしてはコードが難しいので、こっちにのほうに公開します。 コードに関しては、たった 400 行弱の実装で、同じぐらいの長さの NUnit のコードがあります。 最初は、あまりテストファーストで作らなかったので、無駄なコードが混じっているのですが、ひとまず作ったときの手順をさらして行きますね。もうちょっとまとめたら codeplex にでも公開します。 まず、基本クラスをざっと設計してしまいます。 これだけですw 内部に XmlDocument/XmlElement を持たせて、それを参照して XPath 風に動かします。 C++ の時は、このあたりの実装も考えていたのですが、C# は面倒なので XML 関係はお任せにします。 最初のテストケースがこれです。 EXDocument::LoadXML は、単純に XmlDocument::LoadX … 続きを読む

カテゴリー: C#, xUnit | コメントする

もう LINQ to XML はいらない(前哨戦)

昔、10年ぐらい前だったか C++ でこんなアイデアを思いつきました。 こんな風な XML があったときに、 のように、XPath 風にデータを取得できたら楽だろう、と思ったわけです。 実際は、members や person は、文字列になるので、 な感じでコンパイルが通らないかなぁ、と。これをどうやって実現するかというと、【演算子】のオーバーロード機能を使います。 / 演算子をオーバーライドして、 のように演算子の多重定義すればできるかなぁ、と。それで、10 年越しに C# で実現してみました。 残念ながら @ 演算子がないので、% 演算子で代用して、 とすると、name 属性の値の要素が取れます。 更に言えば、 のように string 型の変数に代入することで自動的に “masuda tomoaki” が取れるようになります。 このあたりの自動キャストは im … 続きを読む

カテゴリー: 開発, C# | コメントする

オレオレmvc に PHPUnit を適用する

そんな訳で、オレオレmvc に PHPUnit を使ってみます。 ま、オレオレ mvc はちょっとパワーアップして CakePHP 風なレイアウトとデバッグ表示に。 oreoraMVC ってことで、基本カラーはオレンジ…と言いますか、実は chocolate 色。 実行クエリなんかも表示されます。 テストケースは、こんな感じで書いていこうかなと。 ほら、なんかそれっぽくなっているのが不思議。oreoreMVC はもうちょっとしたら、再度公開します。

カテゴリー: CakePHP, xUnit | コメントする

PHP on IIS に PHPUnit をインストールする

まず、pear ってのが何者か分からずに苦労したのでメモ。 私の場合、PHP on IIS のインストール先が C:\PHP5.3 なのでコマンドプロンプトで移動。 その後、pear のアップデート。 # PHPUnit を入れるためには、PEAR 1.9.1 が必要なんですが、手元のは PEAR 1.9.0 なので駄目らしい。 windowsにPHPunit入れる – これでも… http://d.hatena.ne.jp/aqua1127/20101013/1286948514 のあたりを参考にして、 go-pear channel-update pear.php.net ここで、system|local と聞かれるので local にする。system にすると、c:\windows\pear.ini を作ろうとして失敗するので、local にして、PHPのインストール先 … 続きを読む

カテゴリー: 開発, xUnit | 1件のコメント

単体テストグルグル…な.NET勉強会

一応、こちらでも宣伝をしておきます。 今月の .NETラボ勉強会(2/26 土曜日)で、NUnit を使った単体テストの話をします。 .NETラボ勉強会 2011年2月 http://kokucheese.com/event/index/8415/ 単体テストツール NUnit の概略と実践的な導入ということで、 ・NUnit が導入しやすい構造設計とはどのようなものか? ・NUnit のテストケースは、どれくらいまで書き込むのか? ボリュームはどのくらいが適当なのか? ・受け入れテストで NUnit を使う なところを実践をお話します。 例によって、資料が間に合えば資料があるのですが、まあ、間に合わなければ コードを直に見せるという形になりますが。 # 来た方の様子を見て、NUnit の概要から始めるか、そのあたりは # わかっているものとして飛ばして、実践編のほうに進むのかを # 決め … 続きを読む

カテゴリー: 開発, xUnit | コメントする

データコンバートに explicit を使う

C#のあまり知られていない機能シリーズってことで、explicit を使ってデータコンバートしましょうってのを試してみます。と言いますか、linq to xml いらないよもどきを作っている最中に、そういえばキャストもオーバーライドができたよなぁ、ってところで気づきました。 一般的な型のコンバートは↓のようにするのが普通なのですが… 型なしDataTableから型付きDataTableにコピーする方法 | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2047 いちいち、何とか.CONV 関数を作るのがうざったいですよね。と言うか、使うときに Conv しているのが、ちょっとってな感じなのです。変換しているのが分かり易いといえば分かり易いのですが、C++ 風に言えば、型から型へキャストっていうのも明示 … 続きを読む

カテゴリー: C# | コメントする

Windows アプリケーションでは NUnit を使える構造設計を

ちょっとメモ的に書き下し CppUnit やら NUnit やらは、10年前から使っているのですが、これらの単体テストをうまく活用するためにはコツが入ります。と、言うか、うまく活用できるようなプログラミングスタイル、構造設計、進捗管理状態、になっていないとうまく活用できません。 これ、経験上ですが、NUnit を導入するときの技術的な問題(NUnitを知っているとか知らないとか、Assert.AreEqual だとかなんとか)よりも障壁が大きかったりします。 いくつか導入時のときに注意するポイントを上げると、 ■構造設計が無理なパターン まず、xUnit 自体、UI を必要としない設計にしないとうまく動きません。例えば、Windows アプリケーションでのボタンクリックのエミュレート、Web サイトでのリストボックスの選択、なんていうのが内部ロジックとべったりくっ付いていると、それだけでう … 続きを読む

カテゴリー: 設計 | コメントする

NUnit で DBUnit もどきを使う

データベースアクセスがある場合は、DBUnit を使うのがベストなんでしょうが、ひとまず、初期データの投入だけできればいいや、って気持ちで作ったのがこれです。 例のごとく、リフレクションを使ってプロパティ名=テーブルのカラム名と想定して、INSERT 文を作成します。Visual Studio で作成される型付 DataSet を使っても良いのですが、データ投入をするたびに、別の DataAdapter を呼び出さないといけないし、なんかいまいちなので、ってのと、テストデータの投入なので INSERT 文と、テーブルの中身を DELETE する部分だけが欲しい訳で、型付 DataSet だと冗長なんですよね。 ざっくりと、POJO タイプの DataRow と、単なるコレクションを集めただけの DataTable を作っておきます。 そうして、データ投入をする場合は、 こんな風に、Data … 続きを読む

カテゴリー: C#, xUnit | コメントする

コマンドラインで NUnit を使う

VB2010 Express + NUnit 2.5 で、 初めてのTDD Step by Step http://www.tdd-net.jp/vb2010ee-nunit25-tdd-stepbystep.html NUnit V2 Test Framework https://launchpad.net/nunitv2 暫く、NUnit は使っていなかったのですが(主に Visual Studio 付属の Test Framework を使っていたので)、ちょっとメモ書き程度に。 GUI で使う場合には、上記のリンクから辿るとして、私の場合はコマンドラインの動作を少し。コマンドラインでビルドをして、コマンドラインでテストをする、というシビアなw環境で動かしているので、まずは、テスト環境のディレクトリ構成を決めます。 + 諸々のソースコードがあるところ + test/ テストコード + … 続きを読む

カテゴリー: 開発, C#, xUnit | コメントする