单元测试方法从WP程序集中返回Observable <t> </t>

时间:2012-12-14 15:47:22

标签: unit-testing windows-phone-7 visual-studio-2012 system.reactive

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

1 个答案:

答案 0 :(得分:1)

我建议使用像this article中所做的那样的事情。我用它来定位多个环境,效果很好。您只需要为WP测试创建一个项目,其中包含指向所有测试文件的链接。