2016-12-06 8 views
0

My Visual Studio 2015ソリューションに、.NET 4.5を対象とした単体テストプロジェクトが含まれています。異なる.netバージョンを対象とする場合の単体テストの問題

私がテストしているコードは.NET 4.0 WPFアプリケーションです。プラットフォームの違いは、Visual Studioが「非同期タスク」テストメソッドを正しく認識できるようにするために必要です。

WPFアプリプロジェクトはMvvmLight NuGetパッケージに依存しているので、ユニットテストプロジェクトでもこのパッケージを参照する必要がありました。

ユニットテストのコンパイルは、MvvmLight 5.3.0.19038に5.3.0.19026への参照が含まれていると予想されるため失敗します。

私は.NET 4.0をターゲットに手動MvvmLightパッケージ(およびその依存関係)を作るためにユニットテストプロジェクトのpackages.configファイルを編集しようとした、のように:

<package id="MvvmLight" version="5.3.0.0" targetFramework="net40" /> 

はしかし、アセンブリはまだ同じです。

このプロジェクトをどのようにコンパイルできますか?それでも

[TestMethod] 
    public void MyTestMethod() 
    { 
     TaskEx.Run(async() => 
     { 
      //Replace with unit test code 
      await TaskEx.Delay(1000); 

     }).GetAwaiter().GetResult(); 
    } 

これは、すべてのテストのために動作するかどうかわからないが、それは始めるための方法です:

+0

あなたのユニットテストプロジェクトで 'async await'を使用していますが、テスト対象のプロジェクトではありません。テスト対象のプロジェクトを同様のフレームワークにアップグレードできませんか?あるいは、あなたのテストから 'async/await'をドロップしますか? – Kritner

+0

私もasync awaitを使ってテスト対象のプロジェクトにしています。このため私はMicrosoft.Bcl.Async NuGetパッケージを使用します。私はこの時点で.NETバージョンをアップグレードすることはできません。 –

答えて

0

私はこのようなテストを作成することにより、.NET 4.0の「非同期タスク」試験法の制限を回避することができ。

関連する問題