想象一下,您有一个由不同组件组成的相当复杂的面向服务的架构。组件以不同的语言(Java、PHP、Ruby)编写,并以不同的方式相互通信(即 UI、REST API,在某些情况下共享一些数据库表等)。
我正在尝试为一些端到端测试设计一个集成测试框架。 我们已经对单个组件进行了单元/集成测试,但我们希望构建一些端到端完全测试我们部署的系统(在真实环境中)的东西,以确保功能(根据个人的预期行为)组件)被正确提供并且架构也被正确配置。
我面临的第一个问题是我们的大部分 UI 都是用 PHP 编写的,并且 UI 集成测试已经用 Cucumber 和几个插件编写了。 我正在编写的测试框架(用 Java)应该触发这些功能测试,然后检查相关组件的行为是否符合预期。
显然,我可以使用 Selenium 等 Java 友好组件重写 UI 测试,但重复这些工作没有意义。
另一种解决方案是在 Java 中使用 exec() 调用运行现有测试,等待它们返回,可能会解析输出并继续执行需要完成的其他操作/检查。
鉴于项目的编写方式,将现有的 PHP 代码嵌入到 Java 中似乎不是一个可行的解决方案。
所描述的解决方案对我来说都没有说服力。理想情况下,最好有某种多语言(和多技术)集成框架,可以插入用不同语言和针对不同环境/组件编写的相同测试套件测试。
有人知道朝这个方向发展的工具或框架吗?如果不是,什么是解决此类问题的好方法?
最佳答案
不确定这是否有帮助,但也许可以看看 https://github.com/nablex/glue .这是我开发的一种脚本语言,专注于(集成)测试。
如果你插入,它支持开箱即用的 selenium 脚本 https://github.com/nablex/glue-selenese并且非常可扩展。
我目前在一个客户那里使用它,通过一些自定义扩展来运行用 fox pro 编写的遗留脚本(我实际上重新实现了 fox pro 方法...shiver)和遗留模式,所以它们是仅对旧脚本启用,对新脚本不启用。我还插入了自定义的基于 SOAP 的 Web 服务,其中一个可用于在远程系统上执行数据库调用,为我提供了广泛的集成级测试工具。
虽然脚本语言功能齐全,但我仍在充实默认情况下可用的方法纲要,并仍在尝试将其定位为集成测试工具。让我知道它是否有帮助,或者 - 如果没有 - 为什么它不能满足您的需求,总是对反馈感到满意! :)
PS:“Main”类是启动和运行它的好地方,因为它包含一个工作的 CLI 客户端(支持断点!)
关于java - 多语言集成测试框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15499746/