Continuous Testing再び
昔書いたのはこれ。→ http://d.hatena.ne.jp/masanobuimai/20081114#1226668618
しばらくバギーで動いてなかったInfiniJ改めInfinitest plugin for IntelliJの新しい版が出てたので試してみた。結論から言うと,すごいしょうもないバグがあってWindowsじゃ動かなかった(OSXでは動いたよ)。
なんか思う所あったのが,Google Codeにホスト(infinitest)してたけど独自ドメイン(Infinitest.org)取ったみたい。ちなみにEclipse版もあるよ。
Infinitestそのものがナニモノかというと,ソースコードの変更を感知して,その変更に該当するテストコードのみを実行するという,ウソのようなツールだ。まあ,これが実際動いているんだから信じるしかあるまい。:-)
...と言ったものの,ずーーっとバグがあって動かせてなかったので,試してみたと言ってもトイプロ程度。ある程度の規模でも効果的に動くのかどうかは未評価なのであしからず。
あと,メンバのひとりであるRod Coffin*1さんがオモロいこと書いてあったので,合わせてメモしとく。
→ Raising the Bar with Continuous Testing
超訳すると,
- TDDとCIは良い組み合わせだけど,CIが遅いとイライラするね(CIはフルビルドが基本)。
- んじゃ,変更があったとこだけテストすりゃ良いんじゃね。CT:Continuous Testingって呼ぶとカコイイ。Infinitestっての作ったよ。
- テストの分類は単体テスト/結合テスト/システムテストって分類の他に,速いテストと遅いテストがあるね。
- 速いテストと遅いテストは「単体テスト/結合テスト/システムテスト」がどうかは関係ないよ。
- だから,Infinitestが遅いテストを自動検知して除外できるようになると良いね。
みたいな話。
そうゆうこと言うとね,いっそのことTestNGにスイッチしてテストグループや分散テストとか使った方がいいんじゃね?*2とも思うが,Infinitest自体がTestNGを(まだ)サポートしてないとかいろいろジレンマが...。
当然,テストコードをGroovy(GroovyTest/easyb/spock)やScala(ScalaTest/specs)で書こうかななんて寝言も言えなくなるわな。
#どっちにしろ,開発系の仕事に関わってないから,当面困る事は無いんだけどね。:-P