FlexUnit: проблема тестирования компонента Spark (UIImpersonator) - PullRequest
3 голосов
/ 17 сентября 2011

FlexUnit 4.1

FlashBuilder 4.5.1

Предпосылки * * 1005

Я пытаюсь протестировать пользовательский компонент с поддержкой скинов Flex 4, используя класс FlexUnit UIImpersonator. Если я запускаю свои тесты только из проекта FlashBuilder Spark, все работает нормально. Если я пытаюсь выполнить тестирование из проекта с установленным компонентом mx на пути к классам, я получаю сообщение об ошибке «getElementIndex недоступен в проектах не Flex 4».

ВОПРОС

Могу ли я выполнить модульное тестирование искровых компонентов в среде визуального тестирования FlexUnits, в то же время установив компонент mx в пути к классам?

RESEARCH

UIImpersonator делегирует свои вызовы методов "testEnvironment". Реализация, используемая для этого «testEnvironment», определяется классом VisualTestEnvironmentBuilder и классом FlexEnvironmentBuilder. Если класс FlexEnvironmentBuilder может найти «mx.core.Container» в пути к классам, он возвращает среду MX, в противном случае - среду Spark. Только искровая среда имеет допустимые реализации для соответствующих вызовов методов Flex 4 для UIImpersonator - как метод addElement.

1 Ответ

2 голосов
/ 03 апреля 2012

У меня та же проблема, и я не нашел никакого решения.Я предлагаю подать сообщение об ошибке, но так как FlexUnit находится в процессе принятия Apache Flex, я не думаю, что это будет исправлено в ближайшее время.

В качестве обходного пути.Просто используйте UIImpersonator.addChild () и добавьте ссылку на mx.core.Container в свой TestRunner.Это гарантирует, что контейнер 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);
}
...