1

私はそのような機能ファイルを持っています:

Feature: Viewing revenue

Background:
Given invoices
| Date     | Amount |
| 1/1/2010 | 200    |
| 1/1/2011 | 300    |

Scenario: Total revenue
Then the total revenue is
| Label | Revenue |
|       | $500    |

Scenario: Total revenue by year
When I choose to view it by "Year"
Then the total revenue is
| Label | Revenue |
| 2010  | $200    |
| 2011  | $300    |

各シナリオの実行後にクリーンアップコードを実行したいと思います。次のように、AfterScenario属性で装飾された関数があります。

let [<AfterScenario>] ``Drop Invoices`` () =
  Invoices.removeAll

関数は呼び出されますが、一度だけ、そしてNUnitのGUIランナーを介してプロジェクトをリロードしたときにのみ呼び出されます。プロジェクトをリロードせずにテストを実行しても、関数は呼び出されません。

4

1 に答える 1

3

の呼び出しにパラメータがないようです。 ()Invoices.removeAllを追加する必要がある場合があります。

TickSpecは、属性付きメソッドがユニットを返すことを期待しているため、無視するために結果をパイプする必要がある場合があります。関数にカーソルを合わせると、関数のタイプを確認できますDrop Invoices。これを試行しない場合は、unit->unitと表示されます。

let [<AfterScenario>] ``Drop Invoices`` () =
  Invoices.removeAll () |> ignore

TickSpecの2012年11月のリリースより前に、シナリオでステップを実行するときに例外がスローされた場合にAfterStep関数とAfterScenario関数が呼び出されないという問題がありました。これは最新のソースで修正されており、アセンブリはCodePlexまたはNugetから入手できます。

AfterScenarioとしてマークされた関数が複数あり、それらのいずれかで例外が発生した場合、後続のAfterScenarioメソッドは呼び出されません。理想的には、BeforeSceanrio関数とAfterScenario関数はスローされるべきではありません。

于 2013-02-05T05:29:51.667 に答える