2017-01-17 1 views
0

Xamarin과 통합 된 SpecFlow를 사용하려고합니다. 시험하는 동안 나는 응용 프로그램 (* .apk 파일)을 insltall 및 로그인 페이지로 받고 그것을 çainch 수 있어요하지만 내가 오류를 얻을 :오류 specflow Xamarin 테스트를 실행할 때 기본 유형 또는 구조체를 확인할 수 없습니다.

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 

내가 specflow이 기능 파일을 읽 후이 happeing 믿습니다.

아무도 도와 줄 수 있습니까?

+0

코드를 표시하십시오. –

+0

Pls는 모든 굵은 체의 코드를 적절한 형식으로 변경하는 데 약간의 시간을 소비합니다. 이 링크 http://stackoverflow.com/help/how-to-ask를 통해 나를 도와 드리겠습니다. – Prasad

답변

2

LoginApplicationSteps에는 매개 변수 Xamarin.UITest.Platform을 사용하는 생성자가 있습니다. 이것은 당신을 곤경에 빠뜨리는 원시적 인 유형입니다.
SpecFlow에는 바인딩 클래스를 해결하는 데 사용되는 통합 DI 프레임 워크가 있습니다. 생성자 삽입을 사용합니다. 귀하의 경우, 그것은 작동하지 않는 플랫폼 enum의 등록을 찾고 있습니다. 클래스의 열거 형을 래핑하고 BeforeScenario 후크에 등록하는 것이 해결책입니다 (링크 된 문서의 고급 옵션 페이지 참조). (SpecFlow의 상황에 맞는 주사라고도 함) DI- 프레임 워크

문서는 여기에 있습니다 : http://specflow.org/documentation/Context-Injection/

0

사람이 여기 단계 클래스 사이에 컨테이너로 BoDi를 사용하는 원시 형에 해결하기위한 내 해결하는 경우 :

var test = (string)objectContainer.Resolve<object>("testString"); 
관련 문제