0

我有一個WP7程序集,其中定義了一個Foo類。UnitTesting方法從WP程序返回IObservable <T>

public class Foo 
{ 
    IObservable<int> Bar() { ... } 
} 

我需要使用Visual Studio 2012 MSTest單元測試該方法。

我有一個基於.NET Framework 4.5的單元測試項目在Visual Studio 2012中創建,它引用了我的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>' 

不幸的IObservable在WP被定義System.Observable.dll在.net Framework 4中時,它在mscorlib.dll中定義。我無法爲我的WP和UnitTest項目使用相同的IObservable定義程序集。當在不同的程序集中定義接口時,我通常的App.config <bindingRedirect>技巧不起作用。

在VS 2012中如何使用IObservables的WP項目的UnitTests完成?

回答

1

我建議使用類似this article中所做的操作。我使用它來定位多個環境,並且效果很好。您只需要爲您的WP測試項目提供指向所有測試文件的鏈接。

+0

那麼,最後我不得不這樣做。 –

+0

不好的一面是我只測試鏈接文件,而不是真正的生產組裝。 早期或晚期的測試項目(包含鏈接文件)和真實項目可能會有所不同,我們的解決方案中有100多個項目,因此在測試項目中保留文件鏈接可能會很痛苦。 –

+0

您的測試項目應該是一個單獨的程序集,只需引用wp8版本或wp7版本。你不應該有額外的鏈接。 – Bryant