WatinおよびSpecflowを使用したUIコンポーネントのBDD
質問
私の質問は、私のセットアップが現在、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;
}
トリックは、テストを無視するためにスペックフローアクションをマップすることです
「テストが生産で実行されていないことを考えると」または似たようなもの