无法在我的.NET Core单元测试项目中加载文件或程序集Microsoft.AspNetCore.Mvc.ApiExplorer

时间:2019-03-29 00:50:31

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

.NET Core解决方案中有两个项目:

  • TestWebApp(典型的ASP.NET Core 2.2 Web应用程序)
  • 单元测试应用

我的单元测试应用程序在运行时抱怨 缺少许多文件。我想知道为什么我认为应该通过TestWebApp提供/提供这些文件时会丢失这些文件。

这是csproj文件:

TestWebApp

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Hellang.Middleware.ProblemDetails" Version="3.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

....

单元测试项目/应用

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>

    <IsPackable>false</IsPackable>

    <LangVersion>latest</LangVersion>
  </PropertyGroup>

  ....

  <ItemGroup>
    <ProjectReference Include="..\TestWebApplication\TestWebApplication.csproj" />
  </ItemGroup>

   ...

现在,这是我运行任何单元测试时遇到的第一个错误:

  

消息:System.IO.FileNotFoundException:无法加载文件或程序集“ Microsoft.AspNetCore.Mvc.ApiExplorer,版本= 2.2.0.0,区域性=中性,PublicKeyToken = adb9793829ddae60”。系统找不到指定的文件

因此,我手动 nuget将其添加到单元测试项目中,重新编译并运行所有测试,现在我得到了这个运行时错误:

  

消息:System.IO.FileNotFoundException:无法加载文件或程序集“ Microsoft.AspNetCore.Razor.Runtime,版本= 2.2.0.0,区域性=中性,PublicKeyToken = adb9793829ddae60”。系统找不到指定的文件。

所以现在找不到另一个文件..我以为应该通过TestWebApp将其拉下?

Nuget添加该文件...编译..并进行测试,一切正常。

那为什么我需要手动将这两个nuget都添加到xunit测试项目中?

1 个答案:

答案 0 :(得分:0)

遇到了同样的问题,但是在阅读Test App Prerequisites part in this document之后,它仍然有效。

我在项目文件中错过的是:

使用

<Project Sdk="Microsoft.NET.Sdk.Web"> instead of <Project Sdk="Microsoft.NET.Sdk"> at the top.

并使用了以下软件包:

<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" />