[英]Unit Tests in Visual Studio 2010
我試圖在Visual Studio 2010項目中為WinForm創建一個單元測試。 我將一個新的“編碼UI測試”添加到我的項目中,打開代碼文件,然后右鍵單擊並選擇“為編碼UI測試生成代碼”->“使用編碼UI測試構建器”。 然后,我啟動我的應用程序,在UI Map控件上選擇“記錄”。 我運行測試(在這種情況下,只需選擇一個文本框,輸入一個隨機值,然后單擊一個按鈕即可)。 然后,我從UI Map控件中選擇“ Generate Code”(生成代碼),該控件生成測試將使用的代碼。 運行此測試時,出現錯誤:
測試方法HelloWorldTest.CodedUITest1.CodedUITestMethod1引發異常:Microsoft.VisualStudio.TestTools.UITest.Extension.UITestControlNotFoundException:回放未能找到具有給定搜索屬性的控件。 其他詳細信息:TechnologyName:'MSAA'ControlType:'Window'名稱:'Form1'ClassName:'WindowsForms10.Window'---> System.Runtime.InteropServices.COMException:錯誤HRESULT E_FAIL已從對COM組件的調用返回。
有誰知道我要去哪里錯了?
謝謝
我相信您的問題出在窗口標題上。 您會看到Visual Studio將為應用程序中生成的每個新窗口賦予一個窗口標題。 記錄測試時,窗口的標題為“ Form1”。 它在您的錯誤消息中這樣說:
ControlType:“窗口”名稱:“ Form1”
因此,您需要確定的是您的應用程序是否在每次打開新窗口時都重命名窗口(很可能是這樣)。 例如,如果您打開第二個窗口,則它可能被稱為“ Form2”。
為了使編碼后的ui測試正常工作,它需要知道在哪里尋找某些控件以對其執行操作。 因此,它將需要知道窗口標題才能“選擇文本框,輸入隨機值,然后單擊按鈕”。
我發現要解決此問題的唯一方法是,如果我知道它已更改或將更改,則手動設置窗口標題。
this.UIMap.UIHighCapitalFranchiseWindow.UIHighCapitalFranchiseDocument.UICtl00ContentPlaceHolComboBox.WindowTitles.Clear();
this.UIMap.UIHighCapitalFranchiseWindow.UIHighCapitalFranchiseDocument.UICtl00ContentPlaceHolComboBox.WindowTitles.Add("Franchises for Sale");
如您所見,我只是清除控件的WindowTitles屬性中的所有值,然后添加正確的標題,即我所知道的標題。 在上面的示例中,其組織方式如下:
這。(uimap文件的名稱)。(窗口的名稱)。(窗口中的文檔的名稱)。(某些控件的名稱(組合框,單選按鈕,文本框等))。WindowTitles(清除)或添加)();
此代碼可以直接在已編碼的ui測試文件中,或者如果您要使用部分類UIMap.cs(不是自動生成的部分,UIMap.Designer.cs是自動生成的部分)來更改UIMap 。 只要記住選擇“ .UIMap”,就記得刪除它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.