首页 > 解决方案 > 使用 chrome 驱动程序进行 Spring Boot Docker 应用程序端到端测试

问题描述

我已经使用 maven 进行了单元和集成测试,但是我正在尝试将使用 angular(frontend) 的端到端测试移动到 maven,这样我就可以将测试金字塔的每一层都连接在同一个 maven 构建中,但我有麻烦这样做。

我的 Spring Boot 应用程序有一些依赖项,例如 postgres 和 keycloak。我试图“模拟”依赖项(在单元和集成测试中,我使用带有 testcontainers 的 postgres),所以我可以拥有一个独立的环境,而不依赖于外部服务是否运行。

我设法打开 chrome 并使用 selenium 和 chrome 驱动程序进行了一些点击,但所有这些都在我的本地数据库和前端应用程序上运行,我需要启动并运行它。我想要一些我以后可以与詹金斯集成的东西,所以我需要一些东西来独立工作。

我在互联网上搜索,但我找不到任何这样的场景。任何人都可以帮忙吗?

标签: javaspringmavenselenium-chromedriverend-to-end

解决方案


你可以让詹金斯流程为

+--------------+          +-----------------+       +-----------+
|              |          | Setup Phase     |       |           |
| Trigger Test | -------->| DB setup and    |------>| Run Tests |
|              |          | Any other setup |       |           |
+--------------+          +-----------------+       +-----------+

您的整个端到端测试将分为两个阶段。在第一阶段,您必须为任何第三方服务(如 Keycloak)配置所有必需的服务,如数据库、缓存层、测试凭据。例如,您需要使用正在运行的 Postgresql 或服务所需的任何其他数据库。对于其他第三方服务,如果可用,您可以使用他们的沙箱,否则为每个测试运行使用不同的配置(您也可以有多个配置并根据其他运行的测试选择它们)。在这种情况下,某些第三方服务会要求您拥有公共域/URL,您需要在公共 URL 后面配置您的服务。

一旦您配置了整个系统,您就可以开始使用 API 来使用测试脚本收集响应。可能有一段时间,API 可能无法为您提供您正在查看的确切数据,在这种情况下,您可以在代码中添加新的 API 或使用其他技术来收集数据,例如数据库查询,运行一些手动/使用 FTP 等的自动化脚本


推荐阅读