回答
這是我這樣做的方式。絕不是最好的或唯一的方法。
我有一個基本的功能和啓動一個靜態的公用事業類/關閉appundertest
public static class Utilities
{
private static ApplicationUnderTest App;
public static Launch()
{
try
{
App = ApplicationUnderTest.Launch(pathToExe);
}
catch (Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToLaunchApplicationException e) {}
}
public static Close()
{
App.Close();
App = null;
}
}
我所有的* .uimaps的是在「頁面」或「應用程序的屏幕」分隔基地。這有時會被編碼UI擰緊,你的*。uimaps可能會中斷。另外值得一提的是,所有的uimaps包含一個頁面上的單個動作,例如填寫登錄用戶名或點擊按鈕。
然後,我有一個NavMap類,它包含我在應用程序中執行的所有更高級別的「導航」。這可能是最好拿出一些複雜的結構,但我更喜歡在一個靜態類只列出清單方法
//you will need to include the uimap in a using statement
public static class NavMap
{
public static void Login()
{
this.credsUIMap.EnterUsername();
this.credsUIMap.ENterPassword();
this.credsUIMap.ClickLoginButton();
}
public static void LogOut()
{
this.credsUIMap.ClickLogOutButton();
}
}
最後我在測試中形成
[TestClass]
public class Tests
{
[TestMethod]
public void TestMethod1()
{
NavMap.Login();
}
[TestMethod]
public void TestMethod2()
{
NavMap.LogOut
}
[ClassInitialize()]
public static void ClassInitialize(TestContext testcontext)
{
Utilities.Launch();
}
[ClassCleanup()]
public static void ClassCleanup()
{
Utilities.Close();
}
}
我的codedUI測試文件也做不同類型的測試(正面,負面,壓力,...)單獨的測試文件然後我將它們組合在一個有序的測試
我使用多個項目。一個General包含其他項目的常用方法和通用UIMaps(對General項目具有各自的依賴關係)。
然後我爲每個想自動化的桌面或Web應用程序提供一個項目。在項目中: 每個窗口都有一個UIMap。然後,每個測試實例都可以使用每個測試實例。 每個測試的最佳答案。
我可以添加下面的例子:
***我不能發表圖片我目前的測試解決方案結構的又 例子:http://i.stack.imgur.com/ekniz.png
調用從記錄的動作方式方法測試將是:
#using Application.UIMaps.Common_Application_UIClasses;
#using Application.UIMaps.Window_1_UIClases;
...
Common_Application_UI app_common = new Common_Application_UI();
Window_1_UI win1 = new Window_1_UI();
app_common.goToMenuThatOpenWindow1();
win1.setSomething("hello world!");
win1.exit();
app_common.exit();
也許這不是最好的工作方式,但目前這是我的方式。
爲我的英語道歉。我希望它能激勵你。
我強烈推薦使用類似Code First或CodedUI Page Modeling(我寫的)來以可測試的方式在UI上創建抽象。
即使沒有這些框架,您也可以輕鬆地在您的測試中編寫抽象概念,以便您的測試解決方案看起來與您的主要解決方案代碼非常相似。
我寫了一個blog post關於這看起來如何。
通常,我會爲應用程序中的每個主要工作流程創建一個文件夾,併爲共享創建一個文件夾。這與您的應用的MVC結構非常相似。您應用中的每個控件都將成爲測試項目中的頁面模型。
Web Project
|
|
Views
|
--- Accounts
| |
| --- Create
| --- Manage
|
|
--- Products
|
--- Search
Test Project
|
|
--- Page Models
|
--- Accounts
|
--- ICreateAccountPageModel (interface)
--- CreateAccountPageModel (coded ui implementation)
--- IManageAccountPageModel
--- ManageAccountPageModel
--- Products
|
--- ISearch
--- Search
|
--- Tests
|
--- Accounts
|
--- CreateAccountTests
--- ManageAccountTests
--- Products
|
--- SearchProductTests
頁面模型表示正在測試的頁面(或者如果進行更現代的Web開發,則控制在測試下)。這些可以使用測試驅動方法編寫,而UI實際上尚未開發。
創建帳戶視圖將包含用戶名,密碼和確認密碼輸入。
創建帳戶頁面的模型應該用於設置輸入驗證頁面狀態,點擊註冊按鈕等
的測試將再次測試頁面模型的接口方法。該實現將使用編碼UI編寫。
如果您在您的網站中使用MVVM模式,您的頁面模型最終會看起來非常像您的視圖模型。
- 1. CodedUI測試生成器選擇項目
- 2. Gradle Android - 遺留測試項目結構的測試覆蓋率
- 3. F#項目可以用作codedui測試的主要項目/主機嗎?
- 4. 使用CodedUI測試測試YahooSite
- 5. 使用CodedUI測試測試WPF應用程序,編碼的ui測試項目應共享解決方案嗎?
- 6. 單元測試輸出和項目結構建議--- CMake + Google測試框架
- 7. 單元測試目錄結構
- 8. PyCharm - 項目結構測試和自動進口
- 9. GO單元測試結構化REST API項目
- 10. 用於硒測試的Python項目結構
- 11. 使用groovy從我的項目結構加載測試資源
- 12. C++結構測試
- 13. Ant爲測試項目構建
- 14. 如果您沒有Visual Studio Enterprise,是否可以創建CodedUI測試項目?
- 15. 無法構建使用Google測試的測試項目
- 16. CodedUI上的性能工具測試
- 17. 升級CodedUI測試到VS 2015
- 18. 在CodedUI測試中更改URL
- 19. CodedUI測試「刷新頁面」錯誤
- 20. CodedUI測試:識別html實體字符
- 21. 添加App.Config中到2015年VS項目CodedUI打破測試執行的測試代理2013
- 22. Subversion項目結構?
- 23. Django項目結構,
- 24. Maven項目結構
- 25. CUDA項目結構
- 26. Android項目結構
- 27. Knockout.js項目結構
- 28. NUnit項目結構
- 29. AngularJS項目結構
- 30. GWT項目結構
非常感謝Zaq。 – stasde