【发布时间】:2021-02-04 08:48:28
【问题描述】:
我正在尝试将日志添加到 specflow 测试中,但不幸的是我遇到了异常。我正在使用SpecRun.Specflow v3.4.19 库和xunit。在尝试通过上下文注入注入 ITestOutputHelper 时,我得到了这个:
无法解析接口:Xunit.Abstractions.ITestOutputHelper(解析路径:SpecflowTesting.Steps.CalculatorStepDefinitions) 堆栈跟踪: BoDi.ObjectContainerException:接口无法解析:Xunit.Abstractions.ITestOutputHelper(解析路径:SpecflowTesting.Steps.CalculatorStepDefinitions) TypeRegistration.Resolve(ObjectContainer 容器, RegistrationKey keyToResolve, ResolutionList resolutionPath) ObjectContainer.ResolveObject(RegistrationKey keyToResolve, ResolutionList resolutionPath) ObjectContainer.Resolve(类型 typeToResolve,ResolutionList resolutionPath,字符串名称) c__DisplayClass57_0.b__0(ParameterInfo p) SelectArrayIterator
2.ToArray() Enumerable.ToArray[TSource](IEnumerable1 来源) ObjectContainer.ResolveArguments(IEnumerable`1 参数,RegistrationKey keyToResolve,ResolutionList resolutionPath) ObjectContainer.CreateObject(Type type, ResolutionList resolutionPath, RegistrationKey keyToResolve) TypeRegistration.Resolve(ObjectContainer 容器, RegistrationKey keyToResolve, ResolutionList resolutionPath) ObjectContainer.ResolveObject(RegistrationKey keyToResolve, ResolutionList resolutionPath) ObjectContainer.Resolve(类型 typeToResolve,ResolutionList resolutionPath,字符串名称) ObjectContainer.Resolve(类型 typeToResolve,字符串名称) TestObjectResolver.ResolveBindingInstance(Type bindingType, IObjectContainer container) 第 11 行 lambda_method(闭包,IContextManager,Int32) BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) 第 69 行 TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) 第 514 行 RunnerTestExecutionEngine.ExecuteStepMatch(BindingMatch 匹配,Object[] 参数) TestExecutionEngine.ExecuteStep(IContextManager contextManager, StepInstance stepInstance) 第 435 行 TestExecutionEngine.OnAfterLastStep() 第 260 行 RunnerTestExecutionEngine.OnAfterLastStep() TestRunner.CollectScenarioErrors() 第 60 行 CalculatorFeature.ScenarioCleanup() CalculatorFeature.AddTwoNumbers() 第 8 行 StaticOrInstanceMethodExecutor.ExecuteInternal(ITestThreadExecutionContext testThreadExecutionContext) StaticOrInstanceMethodExecutor.Execute(ITestThreadExecutionContext testThreadExecutionContext) TestNodeTask.Execute()
用法:
private ITestOutputHelper _testOutputHelper;
private readonly ScenarioContext _scenarioContext;
public CalculatorStepDefinitions(ScenarioContext scenarioContext, ITestOutputHelper testOutputHelper)
{
_scenarioContext = scenarioContext;
_testOutputHelper = testOutputHelper;
}
【问题讨论】: