2011-02-02 24 views
4

我的問題集中在如果我的設置目前正在遵循有關使用UI驗證測試的BDD的最佳實踐方法。我使用WatiN和SpecFlow來構建我的UI驗收測試,並將我的應用程序部署到AppHarbor(一個雲平臺作爲.NET應用程序的服務)。 AppHarbor在部署時運行您的單元/集成測試,並且只有在您的測試通過時纔會將您的網站推向市場。於是,我開始通過寫一個基本失敗的測試如下:使用WatiN和SpecFlow的UI組件的BDD

Scenario: Navigation to homepage 
      When I navigate to/
      Then I should be on the application homepage 

與這個測試相關的步驟,使用華廷打開瀏覽器並驗證視圖的標題屬性設置爲「歡迎」。我正在檢查環境,以決定使用WatiN瀏覽器測試哪些URL。例如,如果在開發中導航到「http:// localhost:49641 /」家。否則,請導航至「http://myappharborapp.com/」。

我的問題是,如果您是第一次部署此應用程序,頁面或視圖實際上不存在,因此測試失敗(因爲該網站還沒有生效)。這也會失敗,例如我以後會添加一個「關於」頁面視圖並首先編寫一個失敗的測試。當我推送更新時,測試將失敗,因爲「關於」頁面尚不存在。

那麼我的問題是:我沒有遵循關於如何設置UI測試的最佳實踐?應該如何設置這些測試以便它們在任何環境中通過?

任何洞察力非常感謝!

回答

3

在「傳統」watin測試中,我使用自定義屬性來指定應用程序的版本以及它運行的環境,然後如果錯過了critiera,則跳過測試。

(該代碼是在在parkcalc樣品>觀察者>環境監測http://testingstax.codeplex.com開源)

internal static void CheckSetEnvironment() 
    { 
     Object[] attributes = Utility.GetCallerAttributes(typeof(ExecutionEnvironment), 3); 

     CheckEnvironment(attributes); 
    } 

    private static void CheckEnvironment(Object[] attributes) 
    { 
     TestEnvironment = GetCurrentEnvironment(); 

     if (attributes.Length > 0 && !attributes.Contains(new ExecutionEnvironment(TestEnvironment))) 
     { 
      Assert.Inconclusive("This test is not designed to be executed in the '" + TestEnvironment.ToString() + "' environment."); 
     } 
    } 

    private static EnvironmentType GetCurrentEnvironment() 
    { 
     string currentEnvironment = ConfigurationManager.AppSettings["Environment"].ToLower(CultureInfo.CurrentCulture); 
     EnvironmentType Environment = new EnvironmentType(); 

     try 
     { 
      Environment = (EnvironmentType)Enum.Parse(typeof(EnvironmentType), currentEnvironment, true); 
     } 
     catch (System.ArgumentException) 
     { 
      Assert.Fail(" The current environment setting in 'Environment' in the app.config is invalid."); 
     } 
     return Environment; 
    } 

然後訣竅將映射specflow動作忽略測試

「考慮測試沒有在生產中運行「或類似的東西

+0

感謝您的回覆布魯斯。我會給這個實現一個鏡頭,看起來它應該爲我的目的工作。 – AngelCabo 2011-02-03 15:31:07