将单元测试附加到ASP.NET Core项目

ica*_*hom 5 .net c# asp.net-mvc unit-testing asp.net-core

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

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

但是当我选中方框并点击OK时,我会看到一个对话框,上面写着"无法添加对'PangolinWeb'的引用.程序集必须有'dll'或'exe'扩展才能被引用."

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

Sir*_*tec 13

该项目仍然编译为您可以引用的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>
Run Code Online (Sandbox Code Playgroud)
  1. 使用解决方案项目构建顺序在dotnetcore库项目之后构建引用项目.


Tho*_*mas 3

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

我还想强调朱利亚诺的答案是正确的。xUnit 是 .NET 和 ASP.NET 团队选择的框架。

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

  • 该项目被推迟,因为他们决定废弃project.json。他们切换到 .NET Core 1.2 的 csproj 和 mscorlib shim 支持。预计 2017 年夏季 (2认同)