apache-flex - FlexUnit:Spark 组件测试问题(UIImpersonator)

标签 apache-flex flash-builder flexunit flexunit4

弹性单元 4.1

FlashBuilder 4.5.1

背景

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

问题

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

研究

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

最佳答案

我遇到了同样的问题,没有找到任何解决方案。我建议提交错误,但由于 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);
}

关于apache-flex - FlexUnit:Spark 组件测试问题(UIImpersonator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456760/

相关文章:

apache-flex - Mac OS X 和 Adob​​e Air 跟踪不起作用

apache-flex - 在 Function 中访问 savedThis 属性

apache-flex - AsUnit 与 FlexUnit – 哪个是 "better"?

apache-flex - 处理客户事件的flexunit和Async.asyncHandler()

ios - 与业务合作伙伴分享 iOs 应用程序演示

apache-flex - 如何在 Flex 中刷新应用程序?

apache-flex - 如何防止用户鼠标单击与 Flex Spark slider 的交互?

android - FlashBuilder Away3D iOS -

ios - 具有通用 iOS 库所需的 AIR 第 3 方依赖项