Foo
クラスが定義されたWP7アセンブリがあります。
public class Foo
{
IObservable<int> Bar() { ... }
}
Visual Studio2012MSTestを使用してそのメソッドを単体テストする必要があります。
VisualStudio2012で作成された.netFramework4.5ベースの単体テストプロジェクトがあり、WP7アセンブリを参照しています。
そのための最も簡単なテストは
[TestMethod]
public void MyTestMethod()
{
var foo = new Foo();
var bars = foo.Bar();
}
問題は、エラーメッセージが表示され、そのテストプロジェクトをコンパイルできないことです。
error CS0012: The type 'System.IObservable`1<T0>' is defined in an assembly
that is not referenced. You must add a reference to assembly 'System.Observable,
Version=2.0.5.0, Culture=neutral, PublicKeyToken=24eec0d8c86cda1e'.
1>C:\Work\App2\UnitTestProject1\UnitTest1.cs(41,35,41,42): error CS0029: Cannot
implicitly convert type 'System.IObservable`1<int>' to 'System.IObservable<int>'
残念ながら、WPのIObservableはSystem.Observable.dllで定義されていますが、.netFramework4ではmscorlib.dllで定義されています。WPプロジェクトとUnitTestプロジェクトに同じIObservable定義アセンブリを使用できません。インターフェイスが異なるアセンブリで定義されている場合、通常のApp.config<bindingRedirect>
トリックは機能しません。
VS 2012のIObservablesを使用したWPプロジェクトの単体テストはどのように実行できますか?