C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2008/09/04 12:54
僕はユニットテストコードをテスト対象プロジェクトとは別のプロジェクトに用意する派だ。
理由は、同一プロジェクトに格納するとリリース時にそれらを除外しなければならないから。
でも一回そういうスクリプト書いてしまえば使い回しが利くだろうし、これ以外に大した理由はない。

しかし、bleis-tift さんは、僕とは違い同一プロジェクトに含める派で、除外するための手間を逆手に取っている。
C#でのテスト(1) テスト用プロジェクト(?) - 予定は未定Blog版
なるほど、確かにそういう考え方もできる。
また、同一プロジェクトに含む場合、テスト対象とテストの距離が近くなるなど、他にもメリットがあるのだと思う。


所で、最近僕はそもそも同一プロジェクトに含んだとしてもテストコードを除外する必要はないのではないかと疑問に感じている。
テストコードが含まれていることで何かしらの不都合が生じることなんてないのではなかろうか。
強いて言うならアセンブリのファイルサイズが若干大きくなることくらいか、と。

ここで問題となるのが (テストコード除外による) ビルドツールの強制というメリットがなくなるという点。
一見するとデメリットだ。
しかし、テストコードを除外することに本質的な意味がないのであれば、ビルドツールの強制のためだけにテストコード除外というプロセスを組み込むことになってしまう。
つまり、突き詰めればそれはビルドツールを使えと単に指示することと変りないことになる。テストコードを除外する必要がないのだから。


テストコードが含まれていても不都合が本当に生じないのかどうかはわからない。実際に試してみる必要もありそうだ。


>テストコードが含まれていても不都合
今の会社では、FLOSSに関する規則が厳しく、納品物にこれらのdllはおろか、設定ファイル等を入れることすらできません・・・
幸い、開発時にはそういった縛りがないため、ビルド時に除外してしまえばいいか、と。

2008.09.05 21:01 URL | bleis-tift #sqCyeZqA [ 編集 ]


なるほど、それは除外せざるを得ないですね。
ちなみに、「バグがないプログラムのつくり方」という書籍でもやはり同一プロジェクトに配置してビルド時に除外することを推奨してました。
# 確か、除外する理由には触れてなかったですが
http://www.amazon.co.jp/dp/479810714X/

2008.09.07 01:16 URL | よこけん #Ay6tTHf6 [ 編集 ]


P148~ですね。
テスト対象のコードと同じ場所に置くか、テスト用のパッケージ・フォルダを作るかで分けて記述してありました。
賛否両論ある、とした上で、TDDを徹底させるためにはテストとテスト対象は同じ場所に置くべき、という考えのようです。

ビルド時に除外する、というのは同じでも、この本の著者は物理的にも同じ場所に置くことを推奨しているのですね。
JavaではEclipseを使っている身としては、「パッケージは同じだけれどフォルダを分ける」ことが多いです。

#この本の存在をすっかり忘れていました
#久しぶりに読み返してみるのもいいものですね

2008.09.08 22:56 URL | bleis-tift #sqCyeZqA [ 編集 ]


> ビルド時に除外する、というのは同じでも、この本の著者は物理的にも同じ場所に置くことを推奨しているのですね。

そうなんですよね。僕が今やってる開発ではこれを採用してみました。
ただ、ファイル名を普通に付けてしまうと、
Hoge.cs
HogeFactory.cs
HogeFactoryTest.cs
HogeTest.cs
って感じに順番が変になる場合があるので、
Hoge.cs
Hoge.Test.cs
HogeFactory.cs
HogeFactory.Test.cs
てな感じで名前付けしてます。


> 久しぶりに読み返してみるのもいいものですね

そうですね、特にこの本の後半は読んでて楽しいですしねー (そういう問題じゃないかw

2008.09.10 01:54 URL | よこけん #Ay6tTHf6 [ 編集 ]












トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/228-9bf59003