最近、VS2008内で単体テストを実行する場合と、コマンドラインでmstestを使用して同じ単体テストを実行する場合にいくつかの不整合が発生しました。
私のシナリオは少し進んでいるので、おそらくいくつかのコーナーにぶつかったでしょう。同じデータソースに対して多くのデータ駆動型単体テストを実行しています。PostSharpを試すのも好きです。だから、私はPostSharpアスペクトを書きました---TestDataSourceユニットテストメソッドではなく、ユニットテストタイプに適用します。タイプが作成されると、このアスペクトはPostSharpにDataSource、タイプ内のすべての単体テストメソッドに属性をアタッチするように指示します。
Reflectorでビルドされたアセンブリを調べると、各テストメソッドが実際に正しいDataSource属性に関連付けられていることがわかります。コマンドラインでmstestを使用してテストを実行すると、期待どおりに動作します。各テストは、指定されたデータソースに対して実行されます。
ただし、VS2008でまったく同じ単体テストを実行しても、データソースを見つけることができません。これは、VS2008がビルドされたアセンブリを無視し、ソースコードを確認するかのようです。もちろん、DataSource属性はビルド中に挿入されるため、データ駆動型テストではないようです。
展開されたアイテムに問題はありません。テストに手動でアタッチするDataSourceと、VS2008でテストを正常に実行できます。
何か案は?