Machine Specification(MSpec)はBDDスタイルのテストフレームワークで、BDDスタイルの開発をするなら至極便利。そのMSpecもReSharperと組み合わせてVisual Studio 2010上で簡易にテスト実行できるようにしておかないとありがたみが失せるので設定方法を紹介しておく。
MSpecのReSharperに対する設定が完了すると、下図のようにVSのテストファイルの左側にポケモンボールのようなアイコンがテスト毎に表示されるようになるし、メニューからReSharper -> Unit Tests -> Run Unit Testsでテストを実行できるようにもなる。
実はNuGetからもMSpecの取得は可能なのでそちらから取得してもかまわない。今回はGitHubから取得したmachine/machine.specificationsを使用する。適当にcloneするなりzipファイルをダウンロードして展開してもらいたい。フォルダが展開できたら直下にあるbuild.cmd(Releaseビルドしたい場合はbuild-release.cmd)を実行しよう。実行するとDOS窓が起動し、うにょうにょとビルドが始まり、テストが実行され、しばらくすると完了する。するとBuildフォルダができているので、そこからDebugかReleaseを自分の好みにあわせて選択してもらいたい。使用するだけならばReleaseでよいだろう。
で、そのDebugかReleaseフォルダ内にあるInstallReshaperRunner%%.batを実行する。%%の部分は自分のReShaperのVersionに置き換えてもらいたい。実行すると下記フォルダにMachine.Specifications.dll、Machine.Specifications.ReSharperRunner.6.0.dllとそれぞれpdbファイルがコピーされる。ここではv6.0のbatファイルを叩いたとする。
%appdata%\JetBrains\ReSharper\v6.0\vs10.0\Plugins
NuGetから取得した場合は前述の2つのDLLを上記のパスに自分でコピーすればよい。コピーする際にフォルダが無い場合は自分で作ろう。
コピーできたらVSを再起動しよう。再起動後は上図のポケモンボールがテストファイルの左側に表示されているはずだ。
一点注意が必要なのが、JetBrains配下にコピーしたMachine.Spedifications.DLLとVSで参照しているMachine.Spedifications.DLLのバージョンなどが違うとどうやらReSharperのほうでMSpecのプラグインを認識してくれないようなので同じファイルを使用するようにしよう。新しい環境を構築する際にMSpecをNuGetで取得したり、JetBrainsのほうへは古いファイルをコピーしたりなどを行ってしまいMSpecのテストが中々認識されなくて苦労したことがあるので注意してもらいたい。
2012年11月24日土曜日
2010年4月27日火曜日
Html.RenderPartialのIntelliTraceがExceptionで大変
Visual Studio 2010のIntelliTraceを使い始めてまず目につくのが下図のようなExceptionの情報だと思う。
Html.RenderPartial("hogehoge")でascxを描写している箇所でFileNotFoundExceptionがいくつも放り出されている。おいおいまじかよ、これどうなってんの?と焦るかもしれないが、これは決して深刻な問題ではない。この現象はデバッグ時にASP.NET MVCがViewのパス解決をキャッシュしないために毎度発生している。なのでweb.configのcompilation debugをfalseにしてやればこの問題は発生しない。
<compilation debug="false">
ちなみにWebアプリをリリースする際にはdebugモードは常にfalseにするように心がけよう。さもなければ、下記のようなデメリットにさいなまれることになる。
仮にひとつひとつのWebアプリケーションをチェックするのが面倒ならば、machine.config上に下記のセクションを追加してやれば、そのマシン上のWebアプリケーションはすべて強制的にリリースモードで実行される。
<configuration>
<system.web>
<deployment retail=”true”/>
</system.web>
</configuration>
Html.RenderPartial("hogehoge")でascxを描写している箇所でFileNotFoundExceptionがいくつも放り出されている。おいおいまじかよ、これどうなってんの?と焦るかもしれないが、これは決して深刻な問題ではない。この現象はデバッグ時にASP.NET MVCがViewのパス解決をキャッシュしないために毎度発生している。なのでweb.configのcompilation debugをfalseにしてやればこの問題は発生しない。
<compilation debug="false">
ちなみにWebアプリをリリースする際にはdebugモードは常にfalseにするように心がけよう。さもなければ、下記のようなデメリットにさいなまれることになる。
- 初期ページコンパイルにより時間がかかる(いくつかの最適化バッチが走らないので)
- 実行スピードの低下(デバッグ情報が追加されるので)
- 使用メモリの増大
- スクリプトと画像のキャッシュ無効化
仮にひとつひとつのWebアプリケーションをチェックするのが面倒ならば、machine.config上に下記のセクションを追加してやれば、そのマシン上のWebアプリケーションはすべて強制的にリリースモードで実行される。
<configuration>
<system.web>
<deployment retail=”true”/>
</system.web>
</configuration>
2010年4月13日火曜日
Visual Studio 2010がリリース
MSDNの購読者ではなくともフリーのVisual Studio 2010 ExpressはこちらからDownloadできる(Expressは機能が個々に分割されているので要件にあわせて取得する必要がある。例:C#でWindows Formsアプリを作るならVisual C# 2010 Expressが必要。Webアプリを作るならVisual Web Developer 2010 Expressが必要、という按配)。
新機能をざっと紹介しようかとも思ったのだが、あまりにもたくさん機能があるので断念。代わりに良いブログポストがあったので下記に紹介しておく。
Visual Studio 2010 Released
新機能をざっと紹介しようかとも思ったのだが、あまりにもたくさん機能があるので断念。代わりに良いブログポストがあったので下記に紹介しておく。
Visual Studio 2010 Released
2010年4月12日月曜日
Visual Studio 2010のJavaScriptインテリセンスがすごい
ScottGuのこのブログポスト(JavaScript Intellisense Improvements with VS 2010)がやばい。内容はVS 2010のJavaScriptに対するインテリセンスがすごいですよー、という話なのだが、確かにすごい。
ざっと説明すると、コーディングをしている間にVSが適時コード解析を行うので、変数を宣言して、何かしらの値を割り当てると、その値の型に基づいたインテリセンスをダイナミックに提供してくれる、という機能。
言葉で説明してもいまいち分からないと思うので、前述のブログポストからいくつかコードを抜粋させていただいた。
(前述のブログポストにインテリセンスの使用風景が画像入りで説明がされているので、そちらを見た方がもっとわかりやすいと思う)
他にも、VS2008で対応されていたDOMのインテリセンスだけではなく、windowオブジェクトに対する動的変数、動的関数までもコーディングしていく端からインテリセンスが有効になるからたまらん。すごすぎる。早く使いたい。
ざっと説明すると、コーディングをしている間にVSが適時コード解析を行うので、変数を宣言して、何かしらの値を割り当てると、その値の型に基づいたインテリセンスをダイナミックに提供してくれる、という機能。
言葉で説明してもいまいち分からないと思うので、前述のブログポストからいくつかコードを抜粋させていただいた。
var foo = "Some string value"; foo. // このときにstring用のインテリセンス(charAt, concatなど)が提供される foo = 35; // 数字を代入する foo. // ここではnumber用のインテリセンス(toPrecision, toStringなど)が提供される
(前述のブログポストにインテリセンスの使用風景が画像入りで説明がされているので、そちらを見た方がもっとわかりやすいと思う)
他にも、VS2008で対応されていたDOMのインテリセンスだけではなく、windowオブジェクトに対する動的変数、動的関数までもコーディングしていく端からインテリセンスが有効になるからたまらん。すごすぎる。早く使いたい。
登録:
コメント (Atom)

