Automated tests SpecFlow-字典中不存在给定的键

Automated tests SpecFlow-字典中不存在给定的键,automated-tests,specflow,azure-pipelines,Automated Tests,Specflow,Azure Pipelines,我的Specflow测试场景面临一个奇怪的问题。在“何时”步骤中,我设置ScenarioContext以传递数据,如下所示: ScenarioContext.Current.Add("mykey",ListOfStrings); 在“Then”步骤中,我从scenarioContext检索我的收藏,如下所示 ScenarioContext.Current.Get<IList<string>>("mykey"); ScenarioContext.Current.Get(

我的Specflow测试场景面临一个奇怪的问题。在“何时”步骤中,我设置ScenarioContext以传递数据,如下所示:

ScenarioContext.Current.Add("mykey",ListOfStrings);
在“Then”步骤中,我从scenarioContext检索我的收藏,如下所示

ScenarioContext.Current.Get<IList<string>>("mykey");
ScenarioContext.Current.Get(“mykey”);
在我的本地机器上工作正常,但当我触发VSTS构建时,它会抛出异常

“System.Collections.Generic.KeyNotFoundException:字典中未显示给定的键”

我发现此异常的原因是ScenarioContext字典在“Then”步骤中变为null。
尽管如此,在同一个项目中,其他类似的测试用例场景在我以同样的方式使用ScenarioContext的情况下运行良好。但在这个特定的测试场景中,我面临这样一个问题:SenarioContext在“Then”步骤中重置为null,并在VSTS构建期间抛出异常。任何建议都将不胜感激。

场景上下文继承自字典。调试时,这本字典真的是空的吗?您的代码中是否有ScenarioContext.Current.Clear()呢


我的建议是不要使用ScenarioContext来保存状态,而是使用Context Injection()。

构建定义的任务是什么?您在SpecFlow中使用了哪个测试框架?提供您项目的详细信息。基于我的测试(使用SpecFlow的单元测试项目),它工作正常,该项目仍存在于步骤中,您能否在OneDrive上共享详细构建日志和简单项目?感谢Andreas的回复。运行内置VST时字典变空,在本地调试时工作正常。我的代码中没有使用Clear()。