Xunit 测试用例中的 AppDomain 使用问题 -Cake 脚本
AppDomain Usage Issue in Xunit test cases -Cake Script
我是 运行 我上一个问题中提到的 Xunit 测试用例。
虽然 运行 测试用例,但我的大部分测试用例在尝试从我的 AppDomain
.
访问文件时都失败了
测试用例在 Visual Studio
中成功。
从错误日志中,我可以看到它尝试从 Xunit 控制台运行器位置而不是应用程序位置读取文件。
注意:
我使用 NoAppDomain of Xunit2Settings 作为假。
在处理单元测试和文件时,我建议首先查看是否可以通过使用内存或程序集资源中的数据来避免使用实际的文件系统。这样并行执行、文件系统锁或类似的环境相关的事情就不会成为问题。
因此,如果您有机会从测试中重构文件系统(除非那是您的测试),我会先走那条路。
解决您遇到的问题的一种方法是使用绝对路径,您可以通过在测试中使用测试程序集位置然后 Path.Combine 相对路径来实现此目的。有一个很好的 Whosebug 答案解释了如何获取程序集的路径:
您可以尝试的快速解决方法是使用 Xunit2Settings WorkingDirectory 设置与 VisualStudio 相同的当前目录,但这不是我测试或推荐的方法。
我是 运行 我上一个问题中提到的 Xunit 测试用例。
虽然 运行 测试用例,但我的大部分测试用例在尝试从我的 AppDomain
.
测试用例在 Visual Studio
中成功。
从错误日志中,我可以看到它尝试从 Xunit 控制台运行器位置而不是应用程序位置读取文件。
注意: 我使用 NoAppDomain of Xunit2Settings 作为假。
在处理单元测试和文件时,我建议首先查看是否可以通过使用内存或程序集资源中的数据来避免使用实际的文件系统。这样并行执行、文件系统锁或类似的环境相关的事情就不会成为问题。 因此,如果您有机会从测试中重构文件系统(除非那是您的测试),我会先走那条路。
解决您遇到的问题的一种方法是使用绝对路径,您可以通过在测试中使用测试程序集位置然后 Path.Combine 相对路径来实现此目的。有一个很好的 Whosebug 答案解释了如何获取程序集的路径:
您可以尝试的快速解决方法是使用 Xunit2Settings WorkingDirectory 设置与 VisualStudio 相同的当前目录,但这不是我测试或推荐的方法。