VS2008の単体テスト機能のバグ?
VisualStudio2008 SP1 Team System評価版で遊んでたら妙な動きをしたのでMSDNフォーラムで聞いてみた。
まだ対処方法はよく分からないのでフォーラムのほうで回答が付いたらこっちにも追記する予定。
問題の内容はテスト対象に特定のコードがあるとコード上で右クリック→「プライベートアクセサの作成」を行ってテストプロジェクトに「テストの参照\*.accessor」ファイルが追加されるとビルドが通らなくなるというもの。
特定のコードというのは以下
public interface ISample<T> { T SampleMethod(); } public class Sample<T> : ISample<T> { //ケース1.↓のように実装を行うとアクセッサは生成できる //public T SampleMethod() //ケース2.↓のように明示的実装を行うとアクセッサが生成できない T ISample<T>.SampleMethod() { throw new NotImplementedException(); } }
ジェネリクスのインターフェイスを継承したクラスでインターフェイスの明示的実装を行った場合(ケース2)ではテストプロジェクトのビルド時に以下のエラーが発生し、ビルドが通らない。
error : アセンブリ 'UnitTest_Accessor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' からの型 'UnitTest.Sample_Accessor`1' にあるメソッド 'SampleMethod' に実装が含まれていません。