2013-10-16 172 views
0

對於UI黑盒子測試我需要驗證,這導致經由Process.Start("Some Folder");目錄檢測當前是否打開

某個目錄的開口的代碼的實現已經單元測試一定UI相互作用。在執行單元測試時,我嘲笑並驗證了對此的調用,但UI已完全集成,我需要驗證綁定是否正確設置(它們依賴於CommandParameter)。缺少綁定導致控制檯中出現錯誤40,但僅在運行時檢測到調用缺少或錯誤參數的命令。

Well Process Explorer向我展示了explorer.exe打開的句柄列表,它們如何都被標記爲File,並且有很多文件和目錄帶有句柄,它們不直接顯示爲任務中的打開目錄酒吧的窗戶。

+0

你需要一個系統測試這一點,而不是單元測試。 –

+0

我沒有做單元測試。我說我已經測試了ViewModel的調用鏈,它調用了「在explorer中打開目錄」--service。但是現在我正在做一個黑盒UI測試,這對我來說是一個系統測試。但是,無論我如何稱爲UI測試,我都需要驗證目錄是否已打開。 – Samuel

回答

0

好吧。這個解決方案太微不足道了,讓我感到暈眩。 我已經嘗試過使用WinApi鉤子鉤入explorer.exe和ShellExecute WinApi調用和託管包裝的各種事情。然後我想到了屏幕截圖分析:/

由於我使用White來進行我的WPF UI測試,它本身嚴重依賴於Microsoft的偉大的UIAutomation框架,UIAutomation幾乎可以完成我通過自動化定位窗口所需的一切:

var desktop = AutomationElement.RootElement; 
foreach (AutomationElement element in desktop.FindAll(TreeScope.Children, Condition.TrueCondition)) 
{ 
    if (element.Current.ClassName != "CabinetWClass") 
    { 
      continue; 
    } 
    Console.WriteLine("{0}, {1}",element.Current.Name, element.Current.ClassName); 
} 

不要忘記添加UIAutomationClient和UIAutomationTypes組件和using System.Windows.Automation;