Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Specflow测试结果是否可从AfterScenario hook访问?_C#_Nunit_Specflow - Fatal编程技术网

C# Specflow测试结果是否可从AfterScenario hook访问?

C# Specflow测试结果是否可从AfterScenario hook访问?,c#,nunit,specflow,C#,Nunit,Specflow,有没有办法从Specflow AfterScenario钩子访问测试结果(成功/失败,甚至可能是断言等)?我什么也看不到,但它似乎包含了一些内容。您可以通过查看ScenarioContext.Current获得测试结果。有一个TestError属性可以帮助您 有关更多信息,请参阅此wiki() 是的,有,但是你需要使用反射。在[AfterScenario]块中,使用以下命令: PropertyInfo pInfo = typeof(ScenarioContext).GetProperty("Te

有没有办法从Specflow AfterScenario钩子访问测试结果(成功/失败,甚至可能是断言等)?我什么也看不到,但它似乎包含了一些内容。

您可以通过查看ScenarioContext.Current获得测试结果。有一个TestError属性可以帮助您


有关更多信息,请参阅此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
  }
}