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完成?
那麼,最後我不得不這樣做。 –
不好的一面是我只測試鏈接文件,而不是真正的生產組裝。 早期或晚期的測試項目(包含鏈接文件)和真實項目可能會有所不同,我們的解決方案中有100多個項目,因此在測試項目中保留文件鏈接可能會很痛苦。 –
您的測試項目應該是一個單獨的程序集,只需引用wp8版本或wp7版本。你不應該有額外的鏈接。 – Bryant