我有一个 WP7 程序集,其中Foo
定义了一个类。
public class Foo
{
IObservable<int> Bar() { ... }
}
我需要使用 Visual Studio 2012 MSTest 对该方法进行单元测试。
我在 Visual Studio 2012 中创建了一个基于 .net Framework 4.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 中定义的,而在 .net Framework 4 中它是在 mscorlib.dll 中定义的。我无法为我的 WP 和 UnitTest 项目使用相同的 IObservable 定义程序集。当在不同的程序集中定义接口时,我通常的 App.config<bindingRedirect>
技巧不起作用。
如何在 VS 2012 中使用 IObservables 对 WP 项目进行 UnitTests?