繁体   English   中英

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

[英]Best approach to integration test a Flex/Java web application via Maven?

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

服务器端:

1)Java域模块 - 这只有单元测试

2)Java持久性模块(DAO) - 现在这只有集成测试,它与实时数据库通信以测试DAO,这里没有真正的单元测试

3)Java服务模块 - 现在这只有单元测试

客户端:

4)一个Flex服务模块,打包为SWC并与Java后端通信 - 目前根本没有测试

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

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

以下是我提出的4个问题:

  1. 我们是否应该将集成测试添加到服务模块中,或者这是多余的,因为持久模块具有集成测试并且服务模块已经进行了单元测试? 似乎对Flex-Services模块进行集成测试是一个更高的优先级,并且会同时运行服务模块。
  2. 我们喜欢将集成测试保留在其模块中的想法,但Flex服务模块和WAR模块存在循环。 Flex服务模块的集成测试无法在没有app-server的情况下运行,因此这些测试必须在战争构建之后进行,是吗?
  3. 什么是集成测试Flex客户端UI的好技术(例如Selenium,但适用于Flex)?
  4. 我们应该在WAR模块中放置最终集成测试,还是创建一个在WAR之后构建的独立集成测试模块?

非常感谢任何帮助/意见!

更多的暗示而非强烈的答案,但可能会看看fluint (以前的dpUInt )和与Maven,Flex,Fliunt和Hudson博客文章的持续集成

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

例如。

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

Services.swf加载,建立与服务器的连接,管理所需的服务集合

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

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

ModuleA.swf加载(具有来自Services.swf注入的依赖项),使用这些依赖项来联系它所需的服务。

也就是说,坚持你目前的结构,我会尽可能准确地回答你的问题。

  1. 您希望在集成中测试什么? 您的服务在那里并返回您期望我收集的内容。 因此,如果在BlazeDS中使用远程对象,那么您可以编写测试以确保您可以找到端点,可以找到通道,目标存在,所有远程方法都按预期返回。 服务器团队正在测试数据存储(从它们到数据库并返回),但是您正在测试客户端和服务器之间的合同是否仍然存在。 此合约适用于任何假设 - 例如在有效负载上返回的值对象,存在的远程方法等等。

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

  3. 我发现一些开发人员将UI /功能测试与集成测试相互交换。 虽然您确实可以将两者结合起来,但在Flex中仍然存在自动集成测试的空间,其中加载了Web服务器并检查核心服务以确保它们存在并返回所需的内容。 对于UI /功能测试,Adobe保留了大量资源: http//www.adobe.com/products/flex/related/#ftesting 对于我提到的集成测试,

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM