C# Specflow测试结果是否可从AfterScenario hook访问?
有没有办法从Specflow AfterScenario钩子访问测试结果(成功/失败,甚至可能是断言等)?我什么也看不到,但它似乎包含了一些内容。您可以通过查看ScenarioContext.Current获得测试结果。有一个TestError属性可以帮助您C# Specflow测试结果是否可从AfterScenario hook访问?,c#,nunit,specflow,C#,Nunit,Specflow,有没有办法从Specflow AfterScenario钩子访问测试结果(成功/失败,甚至可能是断言等)?我什么也看不到,但它似乎包含了一些内容。您可以通过查看ScenarioContext.Current获得测试结果。有一个TestError属性可以帮助您 有关更多信息,请参阅此wiki() 是的,有,但是你需要使用反射。在[AfterScenario]块中,使用以下命令: PropertyInfo pInfo = typeof(ScenarioContext).GetProperty("Te
有关更多信息,请参阅此wiki() 是的,有,但是你需要使用反射。在[AfterScenario]块中,使用以下命令:
PropertyInfo pInfo = typeof(ScenarioContext).GetProperty("TestStatus", BindingFlags.Instance | BindingFlags.NonPublic);
MethodInfo getter = pInfo.GetGetMethod(nonPublic: true);
object TestResult = getter.Invoke(ScenarioContext.Current, null);
测试结果将正常,缺少步骤定义等。我使用ScenarioContext来完成此操作。下面是一些示例代码,希望它有意义(没有得到实际的断言值-据我所知不可能),但这意味着如果测试失败,我可以让浏览器保持打开状态:
[AfterScenario]
public void AfterScenario() {
if (ScenarioContext.Current.TestError == null) {
// Test failed (use ScenarioContext.Current.TestError to print out error to logs if required)
_driver.Quit
}
}