弹性单元 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/