【问题标题】:Unit test issue when targeting different .net version针对不同的 .net 版本时的单元测试问题
【发布时间】:2016-12-06 13:59:22
【问题描述】:

我的 Visual Studio 2015 解决方案包含一个针对 .NET 4.5 的单元测试项目。

我正在测试的代码是一个 .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" />

但是,程序集还是一样的。

如何编译这个项目?

【问题讨论】:

  • 只是为了澄清-您在单元测试项目中使用async await,而不是您要测试的项目?不能把待测项目升级到类似的框架吗?或者从你的测试中删除async/await
  • 我在待测项目中也使用了异步等待。为此,我使用 Microsoft.Bcl.Async NuGet 包。我目前无法升级 .NET 版本。

标签: c# wpf unit-testing mvvm-light


【解决方案1】:

我可以通过创建这样的测试来解决 .NET 4.0 上的“异步任务”测试方法限制:

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

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

仍然不确定这是否适用于所有测试,但这是一种入门方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 2012-04-09
    • 2021-11-23
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多