2017-09-05 14 views
0

私のSpecflowテストシナリオで奇妙な問題に直面しています。SpecFlow - 指定されたキーが辞書に存在しません

ScenarioContext.Current.Add("mykey",ListOfStrings); 

を「次に」のステップは、私は

その罰金に取り組ん
ScenarioContext.Current.Get<IList<string>>("mykey"); 

以下のようscenarioContextから私のコレクションを取得していますでは:ステップは、私がデータを渡すために、以下のようScenarioContextを設定しています「とき」に私のローカルマシンが、私はVSTSは例外

「System.Collections.Generic.KeyNotFoundException:指定されたキーが辞書に提示されていなかった」投げるそれを構築トリガーとき

を3210

私がこの例外のために見つけた理由は、ScenarioContext辞書が 'Then'ステップでnullになることです。 同じプロジェクトで、同じようにScenarioContextを使用しているところで、他の同様のテストケースのシナリオがうまく動作します。しかし、この特定のテストシナリオでは、SenarioContextが 'Then'ステップでnullにリセットされ、VSTS Build中に例外をスローするこの問題に直面しています。どんな提案もありがとうございます。

+0

ビルド定義のタスクは何ですか? SpecFlowにどのテストフレームワークを使用しましたか?プロジェクトの詳細を提供します。 –

+0

私のテスト(SpecFlowを使用した単体テストプロジェクト)に基づいて、それは正常に動作し、アイテムはまだステップに存在します。OneDriveでディテールビルドログとシンプルなプロジェクトを共有できますか? –

答えて

1

ScenarioContextは、Dictionaryから継承されています。あなたがデバッグするとき、この辞書は本当に空ですか?コード内にScenarioContext.Current.Clear()のどこかがありますか?

私の提案は、状態を保存するためにScenarioContextを使用せず、Context Injection(http://specflow.org/documentation/Context-Injection/)を使用することです。

+0

応答のためにアンドレアスに感謝します。ビルドをvstで実行しているときにディクショナリが空になり、ローカルでデバッグしている間に正常に動作しています。私は自分のコードでClear()を使用していません。 – DevX

関連する問題