3

弹性单元 4.1

FlashBuilder 4.5.1

背景

我正在尝试使用 FlexUnit UIImpersonator 类测试自定义 Flex 4 可换肤组件。如果我从 FlashBuilder Spark 运行我的测试,则一切正常。如果我尝试从在类路径上设置 mx 组件的项目中进行测试,我会收到“getElementIndex 在非 Flex 4 项目中不可用”错误。

问题

我可以在 FlexUnits 可视化测试环境中对 spark 组件进行单元测试,同时仍然在类路径上设置 mx 组件吗?

研究

UIImpersonator 将它的方法调用委托给“testEnvironment”。用于此“testEnvironment”的实现由 VisualTestEnvironmentBuilder 类和 FlexEnvironmentBuilder 类决定。如果 FlexEnvironmentBuilder 类可以在类路径中找到“mx.core.Container”,则返回 MX 环境,否则返回 Spark 环境。只有 spark 环境对 UIImpersonator 上的 Flex 4 相关方法调用具有有效实现,例如 addElement 方法。

4

1 回答 1

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);
}
于 2012-04-03T09:45:39.333 回答