故郷を離れて三十数年、関東で暮らす永遠の少年のどーってことない日記
xxSEARCHxx
プロフィール

ST☆FF

Author:ST☆FF
HTTといえばインテルの Hyper-Threading Technology!・・・ではなく、放課後ティータイムのことだと思います。

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム
ブログ内検索
RSSフィード
リンク

最近の記事


スポンサーサイト 

--/--/-- --:--/--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CATEGORY:スポンサー広告 | CM(-) | TB(-) |

「NUnit」でハマるの巻 

2011/12/08 00:41/Thu
NUnit」は、単体テストの自動実行を支援するためのツールである。

仕事でこいつを使おうと思い立ち、とあるDLLのテスト用にクラス・ライブラリのプロジェクトを
作成した。「NUnit」のライブラリを参照設定し、簡単なテストコードを書いてビルドも完了。
いざ「NUnit」を起動しテストプロジェクトをオープン、Runボタンを押してみたが、何と「NUnit」が
例外で落ちる状況が発生。

実はこのDLL、インターフェイスとして実装したメソッドの呼び出し時に、同じフォルダに存在する
筈の config ファイルを読み込むという。ビルドとは別にconfig ファイルは人手で持って来なければ
ならないのを忘れていた。
そこでこのファイルをコピペで設置して、改めて「NUnit」実行。しかし、状況は変わらず。
問題の個所は分かっている。メソッドの呼び出し部分なのだ。だが「NUnit」越しの実行では何が
起こっているのかトレース不能である。

そこで Visual Studio の Debugモードで「NUnit」を外部プログラムとして実行する設定に変更して
トレースしてみた。するととんでもないことが分かった。
config ファイルを参照する際に Assembly クラスの GetExecutingAssembly メソッドを使用して
自身のDLLが存在するパスを取得して利用しているのだが、このとき、「NUnit」からの呼び出しだと
System.Reflection.Assembly.GetExecutingAssembly().Location
がなんと一時的なキャッシュのパスを返してしまうようなのだ。

つまり「NUnit」は評価対象のDLLをキャッシュにコピーして実行していることになる。当然実行の
度に適当な名前で作成される"そこ"に config ファイルが存在する筈もなく、従って自身に例外
キャッチを実装していないDLLがそのまま落ちてしまっていたわけだ。(ここもツッコミ所だが・・・)
「NUnit」を理解していない事もあり、ここまでつきとめるのにほぼ一日費やしてしまった。




スポンサーサイト

CATEGORY:仕事関係 | CM(0) | TB(0) |
xx HOME xx
トラックバックURL
→http://3335.blog106.fc2.com/tb.php/150-d42048dd

コメントの投稿














xx HOME xx

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。