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

二.字符处理

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

代码如下:

三.注意事项

这里取得路径方法并不局限与测试工程。可以应用于使用基本的方法取不到的其他场合。

在具体工程使用时:创建测试工程会生成一个solution items。这个配置文件目前尚未研究,但是如果没有了这个文件,通过Assembly.GetExecutingAssembly().CodeBase方法式取不到dll路径的

时间: 2024-12-28 02:17:55

c# 单元测试工程如何取得当前项目路径的相关文章

tomcat 域名直接访问默认工程,而不添加项目路径

<Engine name="Catalina" defaultHost="xx.xx.xx.xx"> <!--For clustering, please take a look at documentation at: /docs/cluster-howto.html (simple how to) /docs/config/cluster.html (reference documentation) --> <!-- <Clu

&lt;VS2017&gt; 编写VC++单元测试 -(一)新建单元测试工程

开发人员自己编写单元测试是一个非常好的习惯.单元测试不但能够验证自己所编写的代码是否存在问题,避免提交给测试人员时才发现bug,也可以为将来改动代码的人提供验证代码功能正确性的途径.在我有限的工作生涯中并未写过太多单元测试,所以我在这方面亦存在诸多不足,所述如果有纰漏,还望各位读者不吝指点. 单独的单元测试工程一般是为了测试暴露给外部程序调用的接口,这样可以保证调用者(单元测试程序)和被调用者(接口)的分离.不过有些时候,我们也要给工程的内部关键方法写一些单元测试,这个时候就需要将测试用例写在工

linux下通过软连接实现访问项目路径外面的资源

在javaweb项目开发中,图片上传是个比较常见的场景.一般都是在项目路径下建个文件夹,然后上传到该文件夹下:这样这个图片就可以和静态资源一样被直接访问.这样的好处就是访问这图片特别方便:缺点是重新部署时要手动把图片备份,不然图片就丢失了. 今天通过在网上查阅一些资料,找到了如下2个方案: (1)配置tomcat虚拟目录 该方案的好处是虚拟目录下的文件也可以类似于静态资源一样这样访问 美中不足的是上传图片还需要上传到虚拟目录的绝对路径,在网上没看到怎么获取虚拟目录的绝对路径的方法:个人想到的解决

获取项目路径的几种方法

Java获取当前项目路径: object.class.getResource()方法获得当前生成的class的绝对路径(此方法在jar包中无效,因为他获得的是生成的class的路径,返回的内容最后包含/) public String getCurrentPath(){ //取得根目录路径 String rootPath=getClass().getResource("/").getFile().toString(); //当前目录路径 String currentPath1=getCl

grails、javascript 获取当前部署项目路径

javascript获取当前部署项目路径: 主要用到Location 对象,包含有关当前 URL 的信息,是 Window 对象的一个部分,可通过 window.location 属性来访问. 方法一 (window.document.location.href/window.document.location.pathname) ------------转自网络 function getRootPath_web() { //获取当前网址,如: http://localhost:8083/uim

C#应用程序获取项目路径的方法总结

一.非Web程序 //基目录,由程序集冲突解决程序用来探测程序集 1.AppDomain.CurrentDomain.BaseDirectory //当前工作目录的完全限定路径2.Environment.CurrentDirectory //当前应用程序的 /bin 目录的路径3.HttpRuntime.BinDirectory 二.Web程序 假设Web项目根目录为:"D:\TestPart\WebDirectoryTest". 1.HttpContext.Current //返回与

.NET项目工程生成一份项目帮助文档chm--Sandcastle工具

.NET项目工程生成一份项目帮助文档chm--Sandcastle工具

Asp.net项目路径获取方法【转】

获取项目完整的绝对路径string path = System.AppDomain.CurrentDomain.BaseDirectory.ToString();string path = Server.MapPath(".");//此"."可以换成项目文件里的其它文件夹名称 输出asp.net 网站路径private void responseHtml() {        System.Text.StringBuilder sb = new System.Tex

git提交代码出现错误fatal: Unable to create &#39;项目路径/.git/index.lock&#39;: File exists.

git提交代码出现错误fatal: Unable to create '项目路径/.git/index.lock': File exists. 具体出错代码如下: 具体原因不详,在stackoverflow上查找了很久,也不清楚原因,但是stackoverflow给出了解决的方法. 解决方法: 在当前项目下打开git bash,运行如下命令: rm -f ./.Git/index.lock 只为成功找方法.大胆的尝试,下一个fun就是你的fun! git提交代码出现错误fatal: Unable