如何在 Specflow 3.0 [BeforeTestRun] static Hook 中访问 TestContext
How to access TestContext in Specflow 3.0 [BeforeTestRun] static Hook
我已经开始将 Specflow 3.0 用于带有内置 MSTest 运行器的 .NET 核心测试项目。
我在尝试设置一次性方法执行以便为 Specflow 中的所有 运行 测试保留不记名令牌值时遇到问题。
所以我的想法是创建 [BeforeTestRun] Hook 静态方法,该方法将使用给定的凭据发出 HTTP 请求。问题是这些凭证存储在 .runsettings 文件中,所以我需要有 MSTest 的 TestContext 对象才能访问字典 属性.
在 Scenario 中,我正在注入 TestContext 并且它工作正常,但是我不知道如何在静态 [BeforeTestRun] 方法中访问此对象。有没有机会自己创建这个对象并存储在静态 属性?
如您所见,这是抽象的 class,所以我猜想测试框架会使用 DI 自动在 Scanarios 中注入具体实现。我怎样才能得到这个具体的实现?
如果不存在解决方案,您是否会建议另一种方法我如何存储除 .runsettings 之外的可配置设置,以便我可以在没有 DI 的静态 [BeforeTestRun] 方法中访问它们?
谢谢
AFAIK 我知道 MSTest 中 TestContext 的行为,每次测试您自己的 TestContext 实例时,您都会进入普通 MSTest。
所以你无法获得整个测试运行的实例。
您可以做的是,在执行的第一个场景的 BeforeScenario 挂钩中执行 HTTP 请求。在那里您可以毫无问题地访问 TestContext 实例。
我已经开始将 Specflow 3.0 用于带有内置 MSTest 运行器的 .NET 核心测试项目。
我在尝试设置一次性方法执行以便为 Specflow 中的所有 运行 测试保留不记名令牌值时遇到问题。
所以我的想法是创建 [BeforeTestRun] Hook 静态方法,该方法将使用给定的凭据发出 HTTP 请求。问题是这些凭证存储在 .runsettings 文件中,所以我需要有 MSTest 的 TestContext 对象才能访问字典 属性.
在 Scenario 中,我正在注入 TestContext 并且它工作正常,但是我不知道如何在静态 [BeforeTestRun] 方法中访问此对象。有没有机会自己创建这个对象并存储在静态 属性?
如您所见,这是抽象的 class,所以我猜想测试框架会使用 DI 自动在 Scanarios 中注入具体实现。我怎样才能得到这个具体的实现?
如果不存在解决方案,您是否会建议另一种方法我如何存储除 .runsettings 之外的可配置设置,以便我可以在没有 DI 的静态 [BeforeTestRun] 方法中访问它们?
谢谢
AFAIK 我知道 MSTest 中 TestContext 的行为,每次测试您自己的 TestContext 实例时,您都会进入普通 MSTest。
所以你无法获得整个测试运行的实例。
您可以做的是,在执行的第一个场景的 BeforeScenario 挂钩中执行 HTTP 请求。在那里您可以毫无问题地访问 TestContext 实例。