Apache flex Flash Builder 4.5和FlexUnit 4.1
我们在Flex4.1中编写了一个大型多模块产品,它运行在基于Java的中间层之上 我来自Java背景,希望Flex环境支持编写和运行单元测试 我已经用FlexUnit的4.1版本更新了Flash Builder 4.5,我可以在应用程序项目上成功地编写和执行单元测试,但我还没有弄清楚如何让单元测试在Flash Builder中的模块或库项目上工作 图书馆项目的问题 由于我们需要将测试编译为应用程序SWF,因此我需要在Flash Builder中创建一个配套项目,或者更改库SWC项目依赖项的链接类型,以避免外部依赖项,因为外部依赖项预期由其他人(通常是顶级应用程序)提供 作为一个实验,我尝试在一个示例库项目上更改链接:成功生成了一个测试运行程序SWF,但FlexUnit未能运行它,因为报告了一个1065错误,这对我来说毫无意义 对于我们使用Gradle的无头构建,我发现在生成测试运行程序SWF时,通过简单地合并所有依赖项,而不考虑它们的原始链接,可以很容易地解决这个问题。我还可以使用外部工具支持在Eclipse中轻松地运行它,因为结果是在通常的JUnit视图中显示的与JUnit兼容的XML结果 你是怎么做到的Apache flex Flash Builder 4.5和FlexUnit 4.1,apache-flex,unit-testing,flash-builder,flexunit,Apache Flex,Unit Testing,Flash Builder,Flexunit,我们在Flex4.1中编写了一个大型多模块产品,它运行在基于Java的中间层之上 我来自Java背景,希望Flex环境支持编写和运行单元测试 我已经用FlexUnit的4.1版本更新了Flash Builder 4.5,我可以在应用程序项目上成功地编写和执行单元测试,但我还没有弄清楚如何让单元测试在Flash Builder中的模块或库项目上工作 图书馆项目的问题 由于我们需要将测试编译为应用程序SWF,因此我需要在Flash Builder中创建一个配套项目,或者更改库SWC项目依赖项的链接类
其他Flex开发人员如何在多模块和多库项目中构建他们的单元测试?您是否在Flash Builder 4.5中运行测试?你能为任何库或模块项目独立运行测试吗?好的,这是我第二次回答我自己的问题,最后一次也是关于Flex的 我曾尝试向每个单独的项目添加测试,但我从一个中心测试项目运行测试 每个项目应具有: 测试目录 在Test目录中具有Test.mxml命名约定的MLXML应用程序 一个顶级测试套件,以通常的包结构将项目中的所有测试聚合到测试目录下 一些单元测试- flashbuilder不喜欢MXML应用程序位于src以外的任何其他目录中,因此不要将测试目录设置为另一个源目录 现在将每个项目中的测试源目录添加到整个测试项目中。您需要将运行时和测试所需的所有依赖项添加到此项目中 我发现FlexUnit在单元测试中如何管理runner有点奇怪。当您在Eclipse中选择“RunAs->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>
我通常使用maven flexmojos进行编译/测试。我们使用GradleFx,Gradle构建工具的插件。我是GradleFx的开发者,最近加入了FlexUnit支持。你能更具体一点吗?这很有用,但您的答案并不完整。谢谢,如果你问一些具体的问题会更容易,否则我就不得不把我所有的维基文档页面都扔掉,这并不方便,因为有很多图形图像,而且它是特定于我们的环境的。是的,我想知道你是否可以发布一些mxml应用程序代码,也许还有你的ant目标。谢谢。没有必要显示FlexUnit生成的MXML。对于手写的MXML,我将在答案中添加一个示例。