c# 单元测试工程如何取得当前项目路径
前言:
C#工程项目中有些配置文件,数据文件等不是C#工程文件,但是程序中需要访问,如果写成绝对路径不利于程序的迁移,所以必须写成相对路径。取得相对路径的方法很多,网上的例子也很多,基本上是七种吧,这里不再赘述,
请看此链接:点击打开链接
但是现在我利用VS2010中的项目创建单元测试功能,对我的项目进行测试。测试工程使用上面的其中方法就不可行了。测试工程是依赖于原有的工程的。在bin/debug/生成的exe也是你被测试的工程exe。因此使用process,environment,appication类都取不到当前工程路径。比如在我的机器上string str = Application.StartupPath;取到的路径就是VS2010的路径【C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE】
那么问题来了,我们如何取到测试工程的当前路径呢
一.程序集
观察bin/debug目录,我们之前通过Appication.StartupPath等方法能够取到当前工程的相对目录是因为.exe可执行文件的存在。但是测试工程中没有测试工程的exe,所以其他方法取不到。但是观察发现,目录下面生成了测试工程的dll。dll是程序集。只要我们取得程序集路径然后进行处理即可。
Assembly.CodeBase属性:取得程序集位置
参考:点击打开链接
因此:
string str=Assembly.GetExecutingAssembly().CodeBase;(using System.Reflection;)
即可取到程序集路径但是注意这个路径前面有:file:///。以及后面的.dll名称。因此我们需要进行字符处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?