我有一个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?