好的,这是我第二次回答我自己的问题(最后一个也是关于 Flex 的)。
我已经为每个单独的项目添加测试,但我从一个中央测试项目运行测试。
每个项目应该有:
- 一个测试目录
- 一个 MLXML 应用程序,
<project name>Test.mxml
在测试目录中具有 的命名约定
- 一个顶级测试套件,以通常的包结构在测试目录下聚合项目中的所有测试
- 一些单元测试;-)
Flash Builder 不喜欢 MXML 应用程序位于除 之外的任何其他目录中src
,因此不要将该test
目录设置为另一个源目录,这一点很重要。
现在将test
每个项目的源目录添加到整个测试项目中。您需要将所有需要的依赖项(运行时和测试)添加到该项目中。
我发现 FlexUnit 管理单元测试运行器的方式有点奇怪。当您在 Eclipse 中选择“run as -> Flex Unit Tests”时,它将提供生成一个测试运行器 MXML 应用程序(您可以选择它应该运行哪些测试)。从上下文菜单中选择“执行 FlexUnit 测试”不会导致 MXML 生成。
您不应将此 MXML 文件签入源代码管理,而应忽略它。原因是如果您想运行一组不同的测试,FlexUnit 不会成功地重新生成此文件。这意味着您需要在想要重新生成文件时手动删除该文件。
下面是我们在库项目中用于测试运行程序的 MXML 示例:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600" creationComplete="onCreationComplete()">
<fx:Script>
<![CDATA[
import net.infonic.hs.AllTestsSuite;
import org.flexunit.listeners.CIListener;
import org.flexunit.runner.FlexUnitCore;
private var core: FlexUnitCore;
public function currentRunTestSuite(): Array {
var testsToRun:Array = new Array();
testsToRun.push(AllTestsSuite);
return testsToRun;
}
private function onCreationComplete(): void {
core = new FlexUnitCore();
core.addListener(new CIListener());
core.run(currentRunTestSuite());
}
]]>
</fx:Script>
</s:Application>