【发布时间】:2021-01-04 05:47:27
【问题描述】:
我的[BeforeTestRun] 和[AfterTestRun] 绑定没有被执行,
而[BeforeScenario]、[AfterStep]和[AfterScenario]正在执行。
从这个类中执行的第一个绑定是[BeforeScenario]。我有点不知道为什么 [BeforeTestRun] 和 [AfterTestRun] 被忽略了。
带有BeforeTestRunAttribute的代码
[BeforeTestRun]
public static void TestInitialize()
{
var htmlReporter = new ExtentHtmlReporter(@"D:\\ExtentReport\\");
extent = new AventStack.ExtentReports.ExtentReports();
extent.AttachReporter(htmlReporter);
}
代码为AfterTestRunAttribute
[AfterTestRun]
public static void CleanUp()
{
extent.Flush();
}
在执行此代码([AfterStep] 和 [BeforeScenario])时:
代码为BeforeScenarioAttribute
[BeforeScenario]
public void BeforeScenario()
{
InitializeSettings();
featureName = extent.CreateTest<Feature>(_featureContext.FeatureInfo.Title);
scenario = featureName.CreateNode<Scenario>(_scenarioContext.ScenarioInfo.Title);
}
代码为AfterStepAttribute
[AfterStep]
public void InsertReportingSteps()
{
var stepName = _scenarioContext.StepContext.StepInfo.Text;
var featureName = _featureContext.FeatureInfo.Title;
var scenarioName = _scenarioContext.ScenarioInfo.Title;
var stepType = _scenarioContext.StepContext.StepInfo.StepDefinitionType.ToString();
if (_scenarioContext.TestError == null)
.....[etc..]
}
有人知道为什么我的BeforeTestRun 和AfterTestRun 绑定没有被执行吗?
所有绑定都在同一个HookInitialize.cs 类中。
-
Specflow 版本 3.4.8
-
Specflow.NUnit 版本 3.4.8
-
NUnit 版本 3.12.0
-
NUnit3TestAdapter 版本 3.17.0
【问题讨论】:
-
您是否将某处的 MSBuild 属性 GenerateSpecFlowAssemblyHooksFile 设置为 false?
-
感谢您的回复,但没有。我的 *.csproj 文件中没有提到
。 -
您能创建一个问题可重现的小项目吗? MSbuild 属性是一个快速的想法,但没有更多信息,我无法说出原因。
-
嗯,它是一个相当小的框架,所以在这个意义上它并不是现在已经很大了。唯一的问题是还添加了并行执行等功能。但据我所知,这不应该影响这部分。
-
您最终解决了这个问题吗?在重构我们的解决方案后遇到同样的问题(所以它曾经可以工作)但不知道为什么......
标签: c# testing binding automated-tests specflow