asp.net-core - 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 文件?
解决方案
我发现在本地运行时,usingvar location = System.AppContext.BaseDirectory
会给出正确的文件夹,然后 usingPath.Combine(location, "Swagger.json");
会给出文件。
不确定这是否是推荐的方法,但它现在有效。