• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c# 单元测试工程如何取得当前项目路径

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

前言:

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名称。因此我们需要进行字符处理


二.字符处理

    主要是去除开头的file:///和结尾的dll名称
代码如下:


三.注意事项

    这里取得路径方法并不局限与测试工程。可以应用于使用基本的方法取不到的其他场合。
在具体工程使用时:创建测试工程会生成一个solution items。这个配置文件目前尚未研究,但是如果没有了这个文件,通过Assembly.GetExecutingAssembly().CodeBase方法式取不到dll路径的


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Windows界面设计(C#)一般过程典型实例------“蓝山人事管理系统”详细过程 ...发布时间:2022-07-14
下一篇:
C#TCP/IP初探发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap