c# 單元測試工程如何取得當前項目路徑

來源:互聯網
上載者:User

標籤:c#   當前項目工程   測試工程   codebase   

前言:

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路徑的

c# 單元測試工程如何取得當前項目路徑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.