質問

私の質問は、私のセットアップが現在、UI受け入れテストを伴うBDDに関するベストプラクティスアプローチに従っているかどうかに焦点を当てています。私はSpecflowでWatinを使用してUI受け入れテストを構築しており、Appharbor(.NETアプリケーションのサービスとしてクラウドプラットフォーム)にアプリケーションを展開しています。 Appharborは、展開時にユニット/統合テストを実行し、テストが合格した場合にのみサイトをライブプッシュします。それで、私は最初に基本的な失敗テストを次のように書き始めました:

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/」に移動します。

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

私の質問は、UIテストをどのように設定する必要があるかに関して、ベストプラクティスに従っていないのですか?これらのテストは、どの環境に渡されるように、どのように設定する必要がありますか?

どんな洞察も大歓迎です!

役に立ちましたか?

解決

「従来の」Watinテストでは、カスタム属性を使用して、アプリケーションのバージョンと実行中の環境を指定し、クリティエラが見逃された場合はテストがスキップされます。

(コードはatのオープンソースです http://testingstax.codeplex.com ParkCalcサンプル>オブザーバー>環境モニター)

    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;
    }

トリックは、テストを無視するためにスペックフローアクションをマップすることです

「テストが生産で実行されていないことを考えると」または似たようなもの

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top