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");
会给出文件。
不确定这是否是推荐的方法,但目前有效。
我们的项目中有一个手动更新的 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");
会给出文件。
不确定这是否是推荐的方法,但目前有效。