2012-03-12 68 views
1

語境:
環境:MS Windows 7或2008
代碼:.NET(C#)尋找一個文件夾比較實用的單元/集成測試

我寫了一些代碼,更改文件系統:副本文件,刪除它們,創建文件夾等。

我想對此代碼進行一些集成測試:我想對給定文件夾執行代碼,然後將結果與預定義的預期文件夾進行比較。
我所需要的只是一個文件夾比較工具,它將比較文件夾結構,僅基於名稱(其他參數,如創建日期,大小,權限 - 無關緊要)。
最重要的是,它應該很容易在代碼(.NET)中自動執行,或者作爲具有可讀輸出的命令行實用程序。

有什麼建議嗎?

回答

1

你可以使用Compare-Object cmdlet的爲寫一個簡單的PowerShell腳本:

$expected = Get-ChildItem C:\ExpectedDirTree 
$actual = Get-ChildItem C:\ActualDirTree 

Compare-Object $expected $actual -Property Name 

這個腳本會根據自己的節點Name屬性,它可以是DirectoryInfoFileInfo對象比較兩個目錄結構。其結果是一個陣列對象的表示所述差異的格式,是相當容易在兩個結構之間進行解析:

Name    SideIndicator 
-----------   ------------- 
SomeDirectory   => 
SomeFile     <= 

目的所得數組中有兩個屬性,則可以使用確定測試的結果:

  • Name:一個字符串:存在於一個結構,而不是其他
  • SiteIndicator的目錄或文件的名稱表示在結構是否存在於比較的左側或在右側
0

我給它另一個想法的一個對象,並且發現了上市與他們相對的所有文件路徑,按路徑和名稱排序就足夠了:如果實際文件列表等於預期文件列表,則測試通過。否則,它失敗。

清單文件可以這樣做:

  • Windows命令行dir命令,但缺乏相對路徑的功能。
  • 代碼(下進行試驗,太)
  • 的外部程序,如Swiss File Knife,就像這樣:
    list -sort -relnames c:\my\path\ +tofile c:\output\my_list.txt
    (最終是我的選擇)