FlexUnit 4.1
FlashBuilder 4.5.1
背景
我正在尝试使用FlexUnit UIImpersonator类测试自定义Flex 4 skinnable组件。如果我从FlashBuilder Spark项目运行我的测试一切正常。如果我尝试从类路径上设置了mx组件的项目进行测试,我会得到“非Flex 4项目中不可用的getElementIndex”错误。
问题
我是否可以在FlexUnits可视化测试环境中单元测试spark组件,同时仍然在类路径上设置mx组件?
研究
UIImpersonator将其方法调用委托给“testEnvironment”。 用于此“testEnvironment”的实现由VisualTestEnvironmentBuilder类和FlexEnvironmentBuilder类决定。如果FlexEnvironmentBuilder类可以在类路径上找到“mx.core.Container”,则它返回MX环境,否则返回Spark环境。只有spark环境在UIImpersonator上有对Flex 4相关方法调用的有效实现 - 比如addElement方法。
答案 0 :(得分:2)
我有同样的问题,并没有找到任何解决方案。我建议提交一个错误,但由于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);
}