Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.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 Xamarin测试时无法解析错误基元类型或结构_C#_Android_Xamarin_Specflow - Fatal编程技术网

C# 运行specflow Xamarin测试时无法解析错误基元类型或结构

C# 运行specflow Xamarin测试时无法解析错误基元类型或结构,c#,android,xamarin,specflow,C#,Android,Xamarin,Specflow,我正在尝试使用与Xamarin集成的SpecFlow。在测试过程中,我能够插入所有应用程序(*.apk)并将其保存到登录页面,但随后出现错误: BoDi.ObjectContainerException was unhandled by user code HResult=-2146233088 Message=Primitive types or structs cannot be resolved: Xamarin.UITest.Platform (resolution path: VVM_

我正在尝试使用与Xamarin集成的SpecFlow。在测试过程中,我能够插入所有应用程序(*.apk)并将其保存到登录页面,但随后出现错误:

BoDi.ObjectContainerException was unhandled by user code
HResult=-2146233088
Message=Primitive types or structs cannot be resolved: Xamarin.UITest.Platform (resolution path: VVM_SpecFlow.LoginApplicationSteps)
  Source=TechTalk.SpecFlow
  StackTrace:
   at BoDi.ObjectContainer.ResolveObject(RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.Resolve(Type typeToResolve, ResolutionList resolutionPath, String name)
   at BoDi.ObjectContainer.<>c__DisplayClass53_0.<ResolveArguments>b__0(ParameterInfo p)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at BoDi.ObjectContainer.ResolveArguments(IEnumerable`1 parameters, RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.CreateObject(Type type, ResolutionList resolutionPath, RegistrationKey keyToResolve)
   at BoDi.ObjectContainer.TypeRegistration.Resolve(ObjectContainer container, RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.ResolveObject(RegistrationKey keyToResolve, ResolutionList resolutionPath)
   at BoDi.ObjectContainer.Resolve(Type typeToResolve, ResolutionList resolutionPath, String name)
   at BoDi.ObjectContainer.Resolve(Type typeToResolve, String name)
   at TechTalk.SpecFlow.Infrastructure.BindingInstanceResolver.ResolveBindingInstance(Type bindingType, IObjectContainer scenarioContainer)
   at lambda_method(Closure , IContextManager )
   at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
   at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
   at VVM___SpecFlow.LoginApplicationFeature.ScenarioCleanup()
   at VVM___SpecFlow.LoginApplicationFeature.LoginWithValidCredentials() in <……..\SpecFlowFeature1.feature:line> 12
  InnerException:  a
BoDi.ObjectContainerException未由用户代码处理
HResult=-2146233088
Message=无法解析基元类型或结构:Xamarin.UITest.Platform(解析路径:VVM_SpecFlow.LoginApplicationSteps)
Source=TechTalk.SpecFlow
堆栈跟踪:
在BoDi.ObjectContainer.ResolveObject(RegistrationKey键到Resolution,ResolutionList resolutionPath)
在BoDi.ObjectContainer.Resolve处(键入typeToResolve、ResolutionList resolutionPath、字符串名称)
在BoDi.ObjectContainer.c__显示类53_0.b__0(参数信息p)
在System.Linq.Enumerable.WhereSelectArrayInterator`2.MoveNext()中
在System.Linq.Buffer`1..ctor处(IEnumerable`1源)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1源)
在BoDi.ObjectContainer.ResolveArguments处(IEnumerable`1参数、RegistrationKey keyToResolve、ResolutionList resolutionPath)
在BoDi.ObjectContainer.CreateObject(类型类型、ResolutionList resolutionPath、RegistrationKey keyToResolve)
在BoDi.ObjectContainer.TypeRegistration.Resolve(ObjectContainer容器,RegistrationKey键到Resolution,ResolutionList resolutionPath)
在BoDi.ObjectContainer.ResolveObject(RegistrationKey键到Resolution,ResolutionList resolutionPath)
在BoDi.ObjectContainer.Resolve处(键入typeToResolve、ResolutionList resolutionPath、字符串名称)
在BoDi.ObjectContainer.Resolve处(键入typeToResolve,字符串名)
位于TechTalk.SpecFlow.Infrastructure.BindingInstanceSolver.ResolveBindingInstance(类型bindingType,IObjectContainer scenarioContainer)
在lambda_方法(闭包,IContextManager)
位于TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding绑定、IContextManager contextManager、对象[]参数、ITestTracer testTracer、时间跨度和持续时间)
在TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteTestepMatch(BindingMatch匹配,对象[]参数)
在TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteTEP(StepInstance StepInstance)
在TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()中
在TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()上
在VVM__;u SpecFlow.LoginApplicationFeature.ScenarioCleanup()中
在12中的VVM__;u SpecFlow.LoginApplicationFeature.LoginWithValidCredentials()处
内部异常:a
我相信这是在specflow读取功能文件后发生的


有人能帮我吗?

您的LoginApplicationSteps有一个参数为Xamarin.UITest.Platform的构造函数。这是给您带来麻烦的基本类型。
SpecFlow有一个集成的DI框架,用于解析绑定类。它使用构造函数注入。在您的情况下,它正在搜索平台枚举的注册,但这不起作用。 解决方案是将枚举包装在一个类中,并将其注册到BeforeCasenario钩子中(请参阅链接文档页面上的高级选项)


DI-framework的文档(在SpecFlow中称为上下文注入)在这里:

您的LoginApplicationSteps有一个参数为Xamarin.UITest.Platform的构造函数。这是给您带来麻烦的基本类型。
SpecFlow有一个集成的DI框架,用于解析绑定类。它使用构造函数注入。在您的情况下,它正在搜索平台枚举的注册,但这不起作用。 解决方案是将枚举包装在一个类中,并将其注册到BeforeCasenario钩子中(请参阅链接文档页面上的高级选项)


DI-framework的文档(在SpecFlow中称为上下文注入)如下所示:

如果有人在步骤类之间使用BoDi作为容器,这里是我解析原语类型的解决方法:

var test = (string)objectContainer.Resolve<object>("testString");
var test=(string)objectContainer.Resolve(“testString”);

如果有人使用BoDi作为步骤类之间的容器,这里是我解决原语类型的方法:

var test = (string)objectContainer.Resolve<object>("testString");
var test=(string)objectContainer.Resolve(“testString”);