Unit testing 单元测试方法返回IObservable<;T>;来自WP组件

Unit testing 单元测试方法返回IObservable<;T>;来自WP组件,unit-testing,windows-phone-7,visual-studio-2012,system.reactive,Unit Testing,Windows Phone 7,Visual Studio 2012,System.reactive,我有一个WP7程序集,其中定义了一个Foo类 public class Foo { IObservable<int> Bar() { ... } } 问题是我收到错误消息,无法编译该测试项目: error CS0012: The type 'System.IObservable`1<T0>' is defined in an assembly that is not referenced. You must add a reference to assembl

我有一个WP7程序集,其中定义了一个
Foo

public class Foo
{
    IObservable<int> 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>'
错误CS0012:在程序集中定义了类型“System.IObservable”“1”
这是没有参考的。必须添加对程序集“System.Observable”的引用,
版本=2.0.5.0,区域性=中性,PublicKeyToken=24eec0d8c86cda1e'。
1> C:\Work\App2\UnitTestProject1\UnitTest1.cs(41,35,41,42):错误CS0029:无法
隐式地将类型“System.IObservable”“1”转换为“System.IObservable”
不幸的是,WP中的IObservable是在System.Observable.dll中定义的,而在.net Framework 4中,它是在mscorlib.dll中定义的。我无法为WP和UnitTest项目使用相同的IObservable定义程序集。当接口在不同程序集中定义时,我通常的App.config
技巧不起作用


如何在VS 2012中使用IObservables对WP项目进行单元测试?

我建议使用类似于在中完成的东西。我使用它来针对多个环境,效果很好。您只需要为WP测试创建一个项目,并提供指向所有测试文件的链接

好吧,最后我不得不这样做。坏的一面是我只测试链接文件,而不是真正的生产程序集。测试项目(带有链接文件)和真实项目迟早会有所不同,我们的解决方案中有100多个项目,因此在测试项目中保留文件链接可能会很痛苦。您的测试项目应该是一个单独的程序集,只引用wp8版本或wp7版本。你不应该有额外的链接。
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>'