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

5
在VS 2015中,我创建了一个ASP.NET Core Web应用程序。ASP.NET 4.x模板的“添加单元测试”复选框是可用的,但当我选择ASP.NET 5模板时,它是灰色的。我尝试创建该项目,计划自己添加单元测试。
我向该解决方案添加了另一个项目,但我无法将两者链接起来。当我右键单击UnitTest项目的引用并点击“添加引用”时,我可以看到原始项目作为选项。 但是,当我勾选该框并点击确定时,我会得到一个对话框,其中显示“无法添加对'PangolinWeb'的引用。必须在程序集上有“dll”或“exe”扩展名才能进行引用。”
为什么我不能将ASP.NET Core项目添加为引用?这是让我的UnitTest项目可用所有它的类和方法的唯一方法吗?

我现在已经使用ASP.NET Core一年了。在我的当前项目中,我的团队正在使用xUnit,我认为这是ASP.NET Core更好的选择。有关更多详细信息,请访问https://xunit.github.io/。 - Juliano Sales
请查看这个答案 - Will Ray
2个回答

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>
  1. 使用解决方案项目构建顺序,使引用的项目在dotnetcore库项目之后构建。

哇...太简单了。好选择 :) - Steve
我喜欢这个答案。 - hannes neukermans

3
您不能将ASP.NET 5(ASP.NET Core)项目添加为.NET Framework .csproj项目的引用(我认为您的单元测试项目就是这样的项目)。这是当前Visual Studio工具中的一个功能缺陷,但将会得到修复(在我看来,作为即将推出的RC2的一部分)。为什么?因为它没有被实现 ;)
我还想强调Juliano的答案是正确的。xUnit是.NET和ASP.NET团队的首选框架。
解决方案:将类作为链接文件包含在您的csproj中。这样,您可以编译两次并测试一次。不是最好的解决方案,但是在工具跟上之前是一个变通方法。

有人对这个问题的修复时间表有更新吗? - Lars Kemmann
2
该项目因决定废弃project.json而被延迟。他们转向使用csproj和mscorlib shim支持.NET Core 1.2。预计完成时间为2017年夏季。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接