【发布时间】:2017-03-20 23:31:03
【问题描述】:
我有一个想用 xUnit 测试的类。此类在构造函数中加载包含此类配置的 .json 文件。默认情况下,这个 json 文件是从当前目录加载的。这在我的应用程序中运行良好,因为它可以解析当前的工作目录。此 json 文件具有 Build Action = Content 和 Copy to output directory = Copy Always 以确保文件始终位于 DLL 文件旁边。
但是,当从 VisualStudio 测试运行程序中调用测试时,DLL 将从临时文件位置运行:C:\Users\<username>\AppData\Local\Temp\3c081508-0a25-45f0-8813-48d4fcabccaa\3c081508-0a25-45f0-8813-48d4fcabccaa\assembly\dl3\4175808c\f164e239_d1a1d201\SomeLibrary.dll,其中所需的每个 DDL 都位于单独的文件中,而 .json 文件无处可见。这意味着从当前 ddl 位置加载 .json 文件的代码失败。当从 VisualStudio 或 xUnit.console 应用程序中运行测试时,该功能就会发生。
为了克服这个问题,我添加了一个配置选项,如果该配置选项存在(我只添加到我的测试项目中),则使用该路径而不是尝试从当前 ddl 加载路径。但是,这现在在竹子中失败了,因为在构建服务器上执行时该路径无效。
有没有办法以编程方式将临时路径获取到 .json 文件所在的位置...或者以某种方式禁用这些临时文件,而只使用 VisualStudio 测试运行器的项目构建目录中的实际 bin 目录?
目前使用 VisualStudio 2017 和 xUnit 2.2.0。
干杯, 贾斯汀
【问题讨论】:
标签: visual-studio unit-testing xunit