2011-02-02 25 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