【问题标题】:Attach unit tests to ASP.NET Core project将单元测试附加到 ASP.NET Core 项目
【发布时间】:2016-05-03 19:27:06
【问题描述】:

我在 VS 2015 中创建了一个 ASP.NET Core Web 应用程序。添加单元测试复选框可用于 ASP.NET 4.x 模板,但是当我选择 ASP.NET 5 模板时变灰了。无论如何,我尝试创建项目并计划添加我自己的单元测试。

我在解决方案中添加了另一个项目,但无法将两者联系起来。当我右键单击 UnitTest 项目的引用并点击 Add Reference 时,我可以看到原始项目 as an option.

但是当我选中该框并点击 OK 时,我收到一个 dialog box,上面写着“无法添加对‘PangolinWeb’的引用。程序集必须具有‘dll’或‘exe’扩展名才能被引用。”

为什么我不能添加一个 ASP.NET Core 项目作为参考?这是使其所有类和方法可用于我的 UnitTest 项目的唯一方法吗?

【问题讨论】:

  • 我现在使用 ASP.NET Core 已经 1 年了。在我当前的项目中,我的团队正在使用 xUnit,我认为这是 ASP.NET Core 的更好选择。有关它的更多详细信息,请查看xunit.github.io
  • 查看this answer

标签: c# .net asp.net-mvc unit-testing asp.net-core


【解决方案1】:

项目还是编译成可以引用的dll,所以不要引用项目,而是引用Core项目的bin文件夹中的dll

  1. 使用“添加引用”浏览对话框添加对文件的引用

  2. 编辑 csproj 以使用变量进行配置,以便在发布模式下正确构建。例如

`

<Reference Include="YourLibrary, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\YourLibrary\bin\$(Configuration)\net45\YourLibrary.dll</HintPath>
  </Reference>
  1. 使用解决方案项目构建顺序使引用项目在 dotnetcore 库项目之后构建。

【讨论】:

  • 哇...这么简单。好电话:)
  • 我喜欢这个答案。
【解决方案2】:

您不能添加 ASP.NET 5 (ASP.NET Core) 项目作为对 .NET Framework .csproj 项目(我认为您的单元测试项目是)的引用。这是当前 Visual Studio 工具中的一个功能差距,但将得到修复(恕我直言,作为即将到来的 RC2 的一部分)。为什么?因为它没有实现;)。

我还想强调 Juliano 的答案是正确的。 xUnit 是 .NET 和 ASP.NET 团队的首选框架。

解决方案:将类作为链接文件包含到您的 csproj 中。像这样你可以编译两次并测试一次。不是最好的解决方案,而是一段时间的解决方法,直到工具赶上来。

【讨论】:

  • 是否有人在时间表上提供了有关何时修复此问题的更新?
  • 项目被推迟了,因为他们决定废弃 project.json。他们使用 .NET Core 1.2 切换到 csproj 和 mscorlib shim 支持。预计 2017 年夏天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多