質問
同一のシナリオがたくさんありますが、それらに渡されるデータによってのみ異なります。これが例です:
機能:レポートの事実をExcelドキュメントにリンクする
事実をExcelドキュメントにリンクするため
レポートにアクセスできるユーザーとして
レポートで事実の価値をクリックしたい
シナリオ:任意のURIアイテム
管理者として管理者としてログインしている場合
そして、サンプルプロジェクトを選択しました
そして、私はFactCollection1およびすべての期間とすべてのクライアントからのデータを含むレポートプレゼンテーションビューを表示することを選択しました
ExcelセルC2をクリックすると
そして、URIアイテムと題された行の2列の値をクリックします
その後、Excel Cell C2にはいくつかのインターネットアドレスを含める必要があります
シナリオ:Base64バイナリアイテム
管理者として管理者としてログインしている場合
そして、サンプルプロジェクトを選択しました
そして、私はFactCollection1およびすべての期間とすべてのクライアントからのデータを含むレポートプレゼンテーションビューを表示することを選択しました
Excel Cell F3をクリックすると
そして、base64バイナリアイテムと題された行の2列の値をクリックします
その後、ExcelセルF3には値ASDFが含まれている必要があります
シナリオ:ブールアイテム
管理者として管理者としてログインしている場合
そして、サンプルプロジェクトを選択しました
そして、私はFactCollection1およびすべての期間とすべてのクライアントからのデータを含むレポートプレゼンテーションビューを表示することを選択しました
ExcelセルJ3をクリックすると
そして、ブールアイテムと題された行の2列の値をクリックします
その後、Excel Cell J3にはTrueを含める必要があります
これを短くして、次のように見えるようにしたいと思います。
シナリオの前:
管理者として管理者としてログインしている場合
そして、サンプルプロジェクトを選択しました
そして、私はFactCollection1およびすべての期間とすべてのクライアントからのデータを含むレポートプレゼンテーションビューを表示することを選択しました
シナリオ:
Excel Cell XXをクリックすると
そして、ZZというタイトルの行のYY列の値をクリックします
その後、Excel Cell YYには価値wwが含まれている必要があります
そして、次のようないくつかのテーブルデータよりも
| XX | YY | ZZ | WW |
| C2 | 2 | any uri item | some internet address |
| F3 | 2 | base64 binary item | asdf |
| J3 | 2 | boolean item | true |
解決策を見つけました。
この機能にはシナリオの概要があります。
Scenario Outline: display label in selected language
Given I am logged as <username> with <password>
And I have clicked on <button> button
Then result should be some result
Examples:
| username | password | button |
| john | doe | first |
| foo | bar | second |
解決
これは非常に興味深い質問であり、「データ主導の仕様」と呼ばれるものを研究するのに少し時間を費やしました。これは、多くの一般的なテストフレームワークが提供する「行テスト」または「データ駆動型のテスト」機能に部分的に触発されています。
「シナリオ」と「仕様」という用語を使用しているわけではありませんが、後者を好みます。
通常のユニットテストと同様に、BDD仕様は3つの部分で構成されています。使用される一般的なテンプレートは、「y then zのときに与えられたx」式です。あなたが発見したことは、あなたの仕様の多くで「X」部分は同じままであるということです。そのような状況に遭遇するたびに、私は作成しようとします フィクスチャ これを抽象化するクラス。たとえば、それらのクラスの1つは LoggedInUserFixture
ログインインユーザーをセットアップし、テストで利用できるようにします。
非常に多くの場合、この備品を他の備品で構成し、仕様の設定を作成する必要があることがわかります。たとえば、を必要とする場合があります LoggedInUserFixture
そしてa UserWithSampleProjectSelected
単一の仕様の場合。これを行う最も簡単な方法は、子供の備品をセットアップし、テストで個別に利用できるようにする別のフィクスチャクラスを作成することです。
私はまだ、備品を作成するための共通のパターンを抽出し、これをサポートするテストフレームワークを作成する衝動に抵抗しています。
データを使用して仕様を駆動するための提案に戻るために、それは有効で有用なパターンであると思います。通常、データを備品の作成に駆動させます(フィクスチャにはデータインジェクションに適したコンストラクターがあります)。見る Subspec's 詳細については、理論的な機能。
他のヒント
使用できます Scenario Outline
それ以外の Scenario
. 。あなたの例は次のようになります:
Scenario Outline:
Given I am logged as admin with admin
And I have selected Sample Project
And I have chosen to view report presentation view containing data from factcollection1 and all periods and all clients
When I click on excel cell '<Cell>'
And I click on the value in '<Column>' column of the row entitled '<Row>'
Then Excel cell '<Cell>' should contain value '<CellValue>'
Examples:
| Cell | Column | Row | CellValue |
| C2 | 2 | any uri item | some internet address |
| F3 | 2 | base64 binary item | asdf |
| J3 | 2 | boolean item | true |