21

stepdefinition クラスで [AfterScenario] バインディングを定義し、各シナリオの後に実行されるメソッドを持っていますが、何らかの理由でこれが機能しません。私のメソッドは各シナリオの後に呼び出されないため、いくつかのテストの後、Excel は開いたままになります...また、失敗したテストのログはありません。なんで?アイデアや提案はありますか?

これが私の方法です:

[AfterScenario]        
public void AfterScenario()
{
    if (TestContext.CurrentContext.Result.State != TestState.Success) ErrorLog();
    excelDriver.Stop();
}
4

2 に答える 2

29

私は今日初めて、BeforeScenario と AfterScenario のものを自分で遊んでいました。

シナリオに @sometag をタグ付けし、AfterScenario() メソッドの属性で同じタグ (「@」またはアットマークなし) を引数として使用しました。

機能ファイル:

@sometag
Feature: Some feature or other
Here is my feature description
...
Scenario: Some scenario
...

イベント ファイル:

[AfterScenario("sometag")]
public void AfterScenario()
{
    // stuff...
}

そのようなタグ付けが鍵かどうかはわかりません。タグがないと AfterScenario() が常に起動する可能性があるため、試しませんでした。

他に試すことができるのは、VS を nunit-agent.exe プロセスにアタッチし、AfterScenario() メソッド内にブレークポイントを設定して、いつヒットするかを確認することです。

于 2011-02-15T04:08:02.363 に答える
3

各シナリオごとに afterScenario() を実行したくない場合は、そのようなタグ付けが重要ですが、すべてのシナリオの後に実行したい場合は、タグ付けする必要はありません。

于 2013-05-06T08:40:46.600 に答える