2011-09-17 4 views
3

는 FlexUnit 4.1는 FlexUnit : 스파크 구성 요소 시험 문제 (UIImpersonator)

FlashBuilder 내가는 FlexUnit UIImpersonator 클래스를 사용하여 사용자 정의 플렉스 4 스킨 구성 요소를 테스트하기 위해 노력하고있어

4.5.1

배경. FlashBuilder Spark에서만 테스트를 실행하면 모든 프로젝트가 올바르게 작동합니다. Classpath에 mx 구성 요소가 설정된 프로젝트에서 테스트하려고하면 "getElementIndex를 Flex 4 프로젝트가 아닌 곳에서 사용할 수 없음"오류가 발생합니다.

질문

FlexUnits I의 단위 테스트 점화 시각 요소 테스트 환경 아직 클래스 경로에 설정된 MX 성분을 가지면서 수 있는가?

연구

UIImpersonator 대표는 메소드의는 "testEnvironment"를 호출합니다. 이 "testEnvironment"에 사용되는 구현은 VisualTestEnvironmentBuilder 클래스와 FlexEnvironmentBuilder 클래스에 의해 결정됩니다. FlexEnvironmentBuilder 클래스가 classpath에서 "mx.core.Container"를 찾을 수 있으면 MX 환경을 반환하고 그렇지 않으면 Spark 환경을 반환합니다. spark 환경 만이 addElement 메소드와 같이 UIImpersonator에서 Flex 4 관련 메소드 호출에 유효한 구현을 가지고 있습니다.

답변

1

동일한 문제가 있으며 해결책을 찾지 못했습니다. 나는 버그를 제기 할 것을 제안하지만 FlexUnit이 Apache Flex에 채택되는 과정에 있기 때문에 조만간 해결 될 것이라고는 생각하지 않습니다.

해결 방법. UIImpersonator.addChild()를 사용하고 TestRunner에 mx.core.Container에 대한 참조를 추가하면됩니다. 이렇게하면 MX 컨테이너가 testEnvironment로 사용되고 'getElementIndex ...'오류가 발생하지 않습니다.

import mx.core.Container 

public function runTests():void { 
    // reference to mx container 
    var containerRef:Container = new Container(); 

    // Run your testsuite as usual. eg: 
    var core:FlexUnitCore = new FlexUnitCore(); 
    core.run(MyTestSuite); 
}