2011-02-02 7 views
4

私の設定は、現在、UI受け入れテストを使用してBDDに関するベストプラクティスアプローチを行っているかどうかに焦点を当てています。私はSpecFlowでWatiNを使用して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を使用してブラウザを開き、ビューのタイトル属性が「ようこそ」に設定されていることを確認します。私はWatiNブラウザでどのURLをテストするかを決定するために環境をチェックしています。たとえば、開発中の場合は、 "http:// localhost:49641 /"に移動します。それ以外の場合は、「http://myappharborapp.com/」に移動します。

私の問題は、このアプリケーションを初めてデプロイする場合、ページまたはビューが実際に存在せず、テストが失敗します(サイトがまだライブではないためです)。たとえば、後で「バージョン情報」ページビューを追加し、最初に失敗したテストを書き込むと、これも失敗します。更新情報をプッシュすると、「バージョン情報」ページがまだ存在しないため、テストは失敗します。

私の質問は次のとおりです。あなたのUIテストの設定方法に関するベストプラクティスに従っていませんか?これらのテストは、どのような環境でも使用できるように、どのように設定する必要がありますか?

洞察力は大変ありがとうございます!

答えて

3

"伝統的な"ワクチンテストでは、カスタム属性を使用してアプリケーションのバージョンと実行環境を指定し、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

Bruce氏に感謝します。この実装には、私の目的のために動作するはずのようなものがあります。 – AngelCabo

+0

心配はいりません。お力になれて、嬉しいです。 –

関連する問題