如何在 C# .NET 集成测试中在运行时找到物理路径?
如何在 C# .NET 集成测试中在运行时找到物理路径?
这个问题已经有了答案:
为了在旧的遗留进程周围包装积分测试 (integration test),该测试基于某些输入生成详细文件,我需要提供文件的完整路径动态加载 DLL。
这个测试将在许多不同的开发人员机器上运行,这些机器并不总是共享相同的物理应用程序目录,但也将在许多服务器上运行,因为它通过持续集成过程,有时会有多个应用程序实例在同一台物理机器上运行。
重要的是,没有可以依赖于硬编码到这个测试中的标准路径。我真正需要的是一些机制,可以告诉我在执行它的时候测试正在执行的物理路径,然后我可以使用从那里开始的相对路径来始终可靠地找到安装中 DLL。
由于这是一个测试,我不能依赖像HttpContext.Current.Server.MapPath()或Request.ApplicationPath这样的东西,因为在测试运行时,Current将为空。
除了编写一个黑客来将我需要动态加载的 DLL 部署到任何驱动器的根目录的特殊文件夹中,以便可能构建和运行应用程序,有没有人知道一个好的 .NET 策略来在运行时找到测试的物理路径?
我正在使用 C# Web 应用程序中的 NUnit,以及批准测试样式的断言,因此需要执行此操作的简单测试如下:
[Test] public void ShouldGenerateFileConsistently() { string pathToDll = FindRelativePathToDllBasedOnPhysicalPath(); // <-- what I need to figure out string generatedFileContents = OutputManager.GenerateReportUsingDynamicDll(pathToDll); Approvals.Verify(generatedFileContents); }
admin 更改状态以发布 2023年5月20日