先ほどのIcarusでは複数のテストフレームワークのテストを実行できました。HTMLレポートを生成することも、テスト対象を絞り込むこともできました。ここで改めてGallioの動作について確認してみましょう。
Gallioが呼び出すテストフレームワークアセンブリ
まずGallioのインストールフォルダを見てみましょう。
これは「C:\Program Files\Gallio\bin\NUnit」のフォルダの中身です。見ての通り、Gallioの中にNUnitのアセンブリ群が含まれていることが分かります。GallioでNUnitのテストを実行すると、このフォルダ、テスト対象アセンブリのフォルダ、またはGAC(グローバルアセンブリキャッシュ)から依存するテストフレームワークのアセンブリがロードされます。
Gallioの仕組み
このフォルダには「Gallio.NUnitAdapter.dll」と「Gallio.NUnitAdapter.plugin」というファイルもあります。これらはNUnitのテストをGallioで動作させるためのアダプタプログラムとプラグイン設定ファイルです。つまり、Gallioチームが、NUnit用のアダプタを実装しているためGallioでNUnitのテストを実行できるわけです(Gallioチームが、テストフレームワークごとにアダプタを作成しています)。このGallioの仕組みを図にまとめてみます。
NUnitのように機能が豊富なテストフレームワークの場合、Gallioのメリットはあまりないかもしれませんが、機能が少ないテストフレームワークの場合、アダプタさえ用意すれば、Icarus、Echo、MSBuild、PowerShell等でテストを実行でき、HTMLやXMLのレポートを生成できるといったメリットが生まれます。
テストフレームワークに中立といいながら、GallioインストーラにMbUnit3が含まれていたり、Gallio直下のフォルダにMbUnit3のDLLが置かれていたりと、MbUnit中心に開発されていることは否めませんが、それでも様々なテストフレームワークからGallioの機能を利用できるのは面白いアイデアといえるでしょう。