通过Maven集成测试Flex/JavaWeb应用程序的最佳方法?

通过Maven集成测试Flex/JavaWeb应用程序的最佳方法?,java,apache-flex,web-applications,integration-testing,maven,Java,Apache Flex,Web Applications,Integration Testing,Maven,我正在从事一个项目,该项目正在开发一个webapp,它具有100%的FlexUI,通过Blaze与运行在应用服务器上的Java后端进行对话。该团队已经创建了许多单元测试,但只为持久性模块创建了集成测试。现在我们想知道集成测试其他部分的最佳方法。以下是我们现在拥有的Maven模块,我相信这是一个非常典型的设计: 服务器端: 1) Java域模块——它只有单元测试 2) Java持久性模块(DAO)——目前只有与实时数据库对话以测试DAO的集成测试,这里没有真正的单元测试 3) Java服务模块——

我正在从事一个项目,该项目正在开发一个webapp,它具有100%的FlexUI,通过Blaze与运行在应用服务器上的Java后端进行对话。该团队已经创建了许多单元测试,但只为持久性模块创建了集成测试。现在我们想知道集成测试其他部分的最佳方法。以下是我们现在拥有的Maven模块,我相信这是一个非常典型的设计:

服务器端:

1) Java域模块——它只有单元测试

2) Java持久性模块(DAO)——目前只有与实时数据库对话以测试DAO的集成测试,这里没有真正的单元测试

3) Java服务模块——目前只有单元测试

客户端:

4) 一个打包为SWC并与Java后端对话的Flex服务模块——目前根本没有测试

5) 一个Flex客户端模块,在Flex服务模块之上实现Flex UI——目前只有单元测试(我们使用MATE创建了一个松散耦合的客户端,视图中没有逻辑)

这5个模块打包成一个WAR,可以部署在应用服务器或servlet容器中

以下是我的4个问题:

  • 我们应该向服务模块添加集成测试吗?或者,如果持久化模块有集成测试,而服务模块已经有单元测试,那么这是多余的吗?另外,集成测试Flex服务模块似乎是一个更高的优先级,并将同时运行服务模块
  • 我们喜欢将集成测试保留在模块内的想法,但Flex服务模块和WAR模块之间存在循环。Flex服务模块的集成测试在没有应用服务器的情况下无法运行,因此这些测试将具有 在战争结束后,是吗
  • 什么是好技术 集成测试Flex 客户端用户界面(例如 硒(但用于Flex)
  • 我们应该把最终的集成测试放在 WAR模块或创建单独的 战后建立的集成测试模块

  • 非常感谢您的任何帮助/意见

    与其说是一个有力的回答,不如说是一个暗示,但不妨看看(以前)和博客帖子。

    首先,请澄清一下。当您说“4)打包为SWC的Flex服务模块”时,您的意思是我收集的Flex服务库作为RSL加载。与将服务作为运行时模块编写相比,这是一个重要的区别,因为后者可以(并且通常会)实例化服务控制器本身,并将服务连接分发到其他模块。您的备选方案是,在每个模块中构建一个库,这意味着它们都创建自己的服务控制器实例。最好将服务逻辑放在应用程序可以加载的模块中,然后再加载其他模块,并管理服务在模块之间的移动

    例如

    Application.swf-启动、初始化IoC容器、加载Services.swf、注入所需的任何依赖项

    Services.swf加载、建立到服务器的连接、管理所需的服务收集

    Application.swf将Services.swf中的托管实例添加到其容器中(使用某种形式的上下文感知以防止冲突)

    Application.swf加载ModuleA.swf,注入它所需的任何依赖项

    ModuleA.swf加载(列出了来自Services.swf injected的依赖项),使用这些依赖项联系它所需的服务

    也就是说,按照你目前的结构,我将尽可能准确地回答你的问题

  • 您想在集成中测试什么?你的服务就在那里,我收集到你想要的回报。同样地,如果在BlazeDS中使用远程对象,那么您可以编写测试以确保能够找到端点、找到通道、存在目标以及所有远程方法按预期返回。服务器团队正在测试数据存储(从数据库到数据库,再到数据库),但是您正在测试客户机和服务器之间的契约是否仍然有效。本合同适用于任何假设,如有效载荷返回的值对象、现有远程方法等

  • (参见下面的第4条)测试应该在他们的模块中,但是我在这里要说的是,你真的应该有一个模块来做服务(而不是像我上面建议的那样有一个库)。无论如何,是的,仍然将测试工件部署到本地web服务器(使用Jetty或类似的工具),并确保集成测试目标取决于您使用的WAR打包机

  • 我发现一些开发人员将UI/功能测试与集成测试交换。虽然您确实可以同时执行这两项测试,但在Flex中仍然有空间进行自动化集成测试,其中加载Web服务器并检查核心服务,以确保它们存在并返回所需的内容。对于UI/功能测试,Adobe维护了一个良好的资源集合:。对于我提到的集成测试

  • 集成测试应该有自己的目标,这取决于打包的WAR项目


  • 链接不错。我们使用Hudson作为我们的CI工具,所以这是很好的阅读。但是,我们已经在使用FlexUnit进行Flex单元测试。这篇文章在谈到持续集成的过程时,没有提到“集成测试”,而“集成测试”显然没有:-(这太糟糕了。@HDave我至少想提到fluint,它被宣传为Flex单元和集成测试框架。但我必须说,我在该领域没有任何实际经验,我对Flex和BlazeDS的知识非常有限。