0

我已经开始将 Specflow 3.0 用于带有内置 MSTest 运行器的 .NET 核心测试项目。

我在尝试设置一次性方法执行以便为 Specflow 中所有正在运行的测试保留不记名令牌值时遇到问题。

所以我的想法是创建 [BeforeTestRun] Hook 静态方法,该方法将使用给定的凭据发出 HTTP 请求。问题是这些凭据存储在 .runsettings 文件中,因此我需要拥有 MSTest 的 TestContext 对象才能访问字典属性。

在场景中,我正在注入 TestContext 并且它工作正常,但是我不知道如何在静态 [BeforeTestRun] 方法中访问这个对象。有没有机会自己创建这个对象并存储在静态属性中?

测试上下文类

如您所见,这是抽象类,所以我猜测试框架会自动在 Scanarios 中使用 DI 注入具体实现。我怎样才能得到这个具体的实现?

如果解决方案不存在,您是否建议另一种方法我如何存储除 .runsettings 之外的可配置设置,以便我可以在没有 DI 的静态 [BeforeTestRun] 方法中访问它们?

谢谢

4

1 回答 1

1

AFAIK 我知道 MSTest 中 TestContext 的行为,对于您自己的 TestContext 实例的每个测试,您都可以使用普通的 MSTest。
因此,您无法获得整个测试运行的实例。

您可以做的是,您在执行的第一个场景的 BeforeScenario 挂钩中执行 HTTP 请求。在那里,您可以毫无问题地访问 TestContext 实例。

于 2019-10-14T09:57:36.177 回答