0

ビルド サーバーで Nunit 2.6.1 を使用して specflow テストを実行するにはどうすればよいですか?

また、複数のオートメーション プログラマーが別々のテストをコーディングしているビルド サーバーでこれらのテストを正常に実行するには、どのようにこれらのテストを維持および編成しますか?

4

1 に答える 1

1

私は今のところあなたの質問の2番目の部分に答えようとします:

「複数の自動化プログラマーが別々のテストをコーディングして、ビルドサーバーで正常に実行するために、これらのテストをどのように維持および整理しますか?」

これらの種類のテストは、保守不可能な混乱に変わる可能性が非常に高く、その理由は次のとおりです。

  • ステップはコンテキストを作成するために使用されます(シナリオテスト用)
  • ステップは、任意のシナリオから任意の順序で呼び出すことができます

これらの2つの単純な事実により、このモデルを手続き型/構造化プログラミングと比較するのは簡単です。シナリオのコンテキストはいくつかのグローバル変数と同じであり、ステップはいつでもどこでも呼び出すことができるいくつかのメソッドです。

私のチームがステップファイルの大きな混乱を避けるために行うことは、それらを可能な限り愚かに保つことです。ステップが行うことはすべて、真に意味のある仕事を行い、現在のテストのコンテキストを保持するサービスを解析して呼び出すことです。これらのサービスを「xxxxDriver」と呼びます(ここで、xxxxは処理しているドメインオブジェクトです)。

愚かな例:

[Given("a customer named (.*)")]
public void GivenACustomer(string customerName)
{
  _customerDriver.CreateCustomer(customerName);
}


[Given("an empty schedule for the customer (.*)")]
public void GivenEmptySchedule(string customerName)
{
  var customer = _customerDriver.GetCustomer(customerName);
  _scheduleDriver.CreateForCustomer(customer);
}

'xxxxxDriver'には、すべてのリポジトリ、Webゲートウェイ、スタブ、モック、または関連するドメインオブジェクトに関連するすべてのものが含まれます。もう1つの重要な詳細は、これらのドライバーをステップファイルに挿入すると、specflowがシナリオごとにそのインスタンスを作成し、すべてのステップファイルで使用することです。

これは、大きなチームが同じコードベースにアクセスすることで、お互いに足を踏み入れることなく、ステップを維持および拡張する方法の一貫性を維持するために私たちが見つけた最良の方法でした。もう1つの大きな利点は、ドライバークラスのメソッドの使用法をナビゲートする同様の手順を見つけるのに役立つことです。

specflowコードベース自体に明確な例があります。(ドライバーフォルダーを見てください) https://github.com/techtalk/SpecFlow/tree/master/Tests/TechTalk.SpecFlow.Specs

于 2012-09-21T05:51:55.760 に答える