Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flash Builder 4.5和FlexUnit 4.1_Apache Flex_Unit Testing_Flash Builder_Flexunit - Fatal编程技术网

Apache flex Flash Builder 4.5和FlexUnit 4.1

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项目依赖项的链接类

我们在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结果

你是怎么做到的


其他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,我将在答案中添加一个示例。