ASP.NET核心2.1:运行集成测试时如何复制(或查找)文件?

ASP.NET Core 2.1: How to copy (or find) a file when running integration tests?

我们的项目中有一个手动更新的 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 文件?

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

不确定这是否是推荐的方法,但目前有效。