0

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

4

1 回答 1

1

我建议使用类似本文中所做的方法。我用它来针对多个环境,它运行良好。您只需要为您的 WP 测试创建一个项目,其中包含指向所有测试文件的链接。

于 2012-12-14T17:27:09.257 回答