0

Fooクラスが定義されたWP7アセンブリがあります。

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

Visual Studio2012MSTestを使用してそのメソッドを単体テストする必要があります。

VisualStudio2012で作成された.netFramework4.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で定義されていますが、.netFramework4ではmscorlib.dllで定義されています。WPプロジェクトとUnitTestプロジェクトに同じIObservable定義アセンブリを使用できません。インターフェイスが異なるアセンブリで定義されている場合、通常のApp.config<bindingRedirect>トリックは機能しません。

VS 2012のIObservablesを使用したWPプロジェクトの単体テストはどのように実行できますか?

4

1 に答える 1

1

この記事で行われているようなものを使用することをお勧めします。これを使用して複数の環境をターゲットにすると、うまく機能します。すべてのテストファイルへのリンクを含むWPテスト用のプロジェクトが必要です。

于 2012-12-14T17:27:09.257 に答える