近來做UnitTest,昨天遇到了一個問題,十分火大,搞了我兩個小時有了。主要是測試的方法裡調用了另一個dll的方法,而這個被調用的方法用了AppDomain.CurrentDomain.BaseDirectory這個東西,當run test時,會動態隨時間創建一個測試的部署文件夾,在TestResult目錄下, 而這個部署文件夾裡又有in和out兩個文件夾,而當前這個AppDomain.CurrentDomain.BaseDirectory正是指out目錄,這裡用到AppDomain.CurrentDomain.BaseDirectory,是為了讀取xml文件,此刻就會發現找不到XML文件的錯誤,而這個部署文件夾又是隨時間動態創建的,這可怎麼辦?
翻天覆地,找到了DeploymentItemAttribute,這個東西還是有點用處的,看了看MSDN,裡面有個sample,照著上面講的做了,但還是沒發現什麼……關鍵是上面少了一個說明,就是xml文件在copy到自己的測試項目目錄下,然後在solution explorer裡找到這個xml,再看這個xml的property explorer,上面有個“復制到輸出目錄”的選項,把它選上“始終復制”這項,再用DeploymentItem部署一下,如xml文件名為"context.xml",則寫成DeploymentItem["context.xml"],當再次run test時,測試目錄下的context.xml就會自動復制到out目錄下,這時要讀取XML就沒問題了。