わんくま同盟 大阪勉強会 #38 で Pex の話をします - お だ のスペース でも書きましたが、スピーカーをさせて頂きました。
セッション自体は Pex for fun - from Microsoft Research を紹介する時間を取りたくて、かなりハイペースになってしまいました。
セッション後や懇親会で幾つか質問があったので、何人かには興味は持ってもらえたのかな〜と思ってます、目的達成ですね!
では、幾つかあった質問を紹介してみます。
- Visual Studio 2010 じゃないと使えない?2008 でも使いたいんだけど?
コマンドラインツールは、Visual Studio に依存しないので、.NET 2.0 以上なら使えます。
また Visual Studio のアドインの場合は、2008、2010 に対応している様です。
Pex and Moles - Downloads - Microsoft Research より引用
Pex Contents
- Pex command line (Visual Studio not required)
- Pex Visual Studio Add-in, for Visual Studio 2008 and Visual Studio 2010
- Moles, see below
- API reference, tutorials and documentation
- Samples and Behaviors
- Pex Wizard は .dll じゃないと使えない? .exe に対して使ったらエラーが出たんだけど?
その場で試しされた方から質問がありました。Pex Wizard はアセンブリに対して使用出来るので .exe でも問題ありません。
http://research.microsoft.com/en-us/um/redmond/projects/pex/wiki/Pex%20Wizard.html: より引用。
pexwizard.exe <your assembly name>
エラーになった原因は、.exe だからではなくメソッドの可視性が問題だったんじゃないかな?と思います。
以前にも書きましたが、
Pex で使われている属性を調べてみた - PexMethodAttribute - お だ のスペース より引用
Visibility [http://research.microsoft.com/en-us/um/redmond/projects/pex/wiki/Visibility.html] ざっくり書くと、 ・internal:PexClass から見えるなら使えるよ。 InternalsVisibleToAttribute クラス (System.Runtime.CompilerServices) を使って公開してね。この属性は、以前少し紹介しました。C# InternalsVisibleToAttribute と アセンブリの署名 - お だ のスペース ・private:生成するテストコードは、partial class を使うので、private でも見えるよ。 ・protected:生成するテストコードは、partial class か サブクラスを使うので、protected でも見えるよ。
ここでいう、private でも見えるというのは テスト対象のクラスの private メンバーでは無く、Pex Wizard で生成/自前で作成する parameterized test cases を実装しているクラスの private メンバーのことです。誤解を招きそうな表現でしたね。
追記
Pex Wizard は成功したんですが、Pex で失敗しました。なんで?Visual Studio からは成功するんですけどね〜。