首页 > 解决方案 > ASP.NET Core 2.1:运行集成测试时如何复制(或查找)文件?

问题描述

我们的项目中有一个手动更新的 json 文件,它位于 %solutionDir%/SomeProject/SomeProject/Foo.json

我们正在编写一个集成测试来对这个静态 json 文件进行一些检查(这样我们就可以确定它是手动更新、错误更新,还是应该更新但没有更新)。

我们的集成测试项目正在下%solutionDir%/SomeProject/SomeProject.IntegrationTests/

我们通过引用 Foo.json 文件

  <ItemGroup>
    <None Include="..\SomeProject\Foo.json" Link="Foo.json" />
  </ItemGroup> 

在构建测试项目时,我们看到文件输出到我们的/bin文件夹中。

当尝试通过 引用我们的测试方法中的文件时Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),我们无法找到该文件,因为集成测试在不同的 ( .../AppData/.../Temp/...) 文件夹中运行,其中只有一个 dll 文件。

如何引用我们复制到输出的 json 文件?

标签: asp.net-coreintegration-testingasp.net-core-2.1

解决方案


我发现在本地运行时,usingvar location = System.AppContext.BaseDirectory会给出正确的文件夹,然后 usingPath.Combine(location, "Swagger.json");会给出文件。

不确定这是否是推荐的方法,但它现在有效。


推荐阅读