我已开始将Specflow 3.0用于带有内置MSTest运行程序的.NET核心测试项目。
我试图设置一次性方法执行以持久化Specflow中所有正在运行的测试的承载令牌值时遇到问题。
因此,我的想法是创建[BeforeTestRun] Hook静态方法,该方法将使用给定的凭据发出HTTP请求。问题在于这些凭据存储在.runsettings文件中,因此我需要具有MSTest的TestContext对象才能访问字典属性。
在方案的情况下,我正在注入TestContext,并且工作正常,但是我不知道如何在静态[BeforeTestRun]方法中访问此对象。是否有机会自己创建此对象并存储在静态属性中?
如您所见,这是抽象类,因此我猜想Test Framework会自动在具有DI的Scanarios中注入具体的实现。我怎样才能得到这个具体的实现?
如果不存在解决方案,您是否会建议另一种方法,除了.runsettings之外,我如何还可以存储可配置设置,以便可以在没有DI的情况下以静态[BeforeTestRun]方法访问它们?
谢谢
最佳答案
AFAIK我知道MSTest中TestContext的行为,对于您自己的TestContext实例的每个测试,您都会得到普通的MSTest。
因此,您无法获得整个测试运行的实例。
您可以做的是,在要执行的第一个方案的BeforeScenario挂钩中执行HTTP请求。在那里,您可以毫无问题地进入TestContext实例。
关于testing - 如何在Specflow 3.0 [BeforeTestRun]静态 Hook 中访问TestContext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58354361/