zoukankan      html  css  js  c++  java
  • 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路径的

  • 相关阅读:
    sass、less和stylus的安装使用和入门实践
    CSS LINT,优化你的CSS样式表
    css lint是有害的
    CSS学习资源
    css border制作小三角形状及应用(兼容IE6)
    css专题学习-浏览器兼容性问题目录
    每位设计师都应该拥有的50个CSS代码片段
    前端基础一:Doctype? 行内元素和块级元素
    inline-block代替浮动布局float:left列表布局最佳方案
    css超出一行添加省略号属性:text-overflow和white-space
  • 原文地址:https://www.cnblogs.com/stoneFang/p/6715318.html
Copyright © 2011-2022 走看看