2016-12-06 54 views
0

我的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的引用。

我试过单元测试项目手动编辑packages.config文件,以使MvvmLight包(及其依赖)面向.NET 4.0,如:

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

但是,大会仍然是相同的。

如何编译这个项目?

+0

只是为了澄清 - 你在单元测试项目中使用'async await',但不是你要测试的项目?你能否将被测试的项目升级到类似的框架?或者从测试中删除'async/await'? – Kritner

+0

我也在待测项目中使用async await。为此我使用Microsoft.Bcl.Async NuGet包。我目前无法升级.NET版本。 –

回答

0

我可以这样创建测试解决方法在.NET 4.0“异步任务”测试方法的局限性:

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

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

仍不能确定这是否会为所有的测试工作,但它是上手的方式。