java - 使用 chrome 驱动程序进行 Spring Boot Docker 应用程序端到端测试
问题描述
我已经使用 maven 进行了单元和集成测试,但是我正在尝试将使用 angular(frontend) 的端到端测试移动到 maven,这样我就可以将测试金字塔的每一层都连接在同一个 maven 构建中,但我有麻烦这样做。
我的 Spring Boot 应用程序有一些依赖项,例如 postgres 和 keycloak。我试图“模拟”依赖项(在单元和集成测试中,我使用带有 testcontainers 的 postgres),所以我可以拥有一个独立的环境,而不依赖于外部服务是否运行。
我设法打开 chrome 并使用 selenium 和 chrome 驱动程序进行了一些点击,但所有这些都在我的本地数据库和前端应用程序上运行,我需要启动并运行它。我想要一些我以后可以与詹金斯集成的东西,所以我需要一些东西来独立工作。
我在互联网上搜索,但我找不到任何这样的场景。任何人都可以帮忙吗?
解决方案
你可以让詹金斯流程为
+--------------+ +-----------------+ +-----------+
| | | Setup Phase | | |
| Trigger Test | -------->| DB setup and |------>| Run Tests |
| | | Any other setup | | |
+--------------+ +-----------------+ +-----------+
您的整个端到端测试将分为两个阶段。在第一阶段,您必须为任何第三方服务(如 Keycloak)配置所有必需的服务,如数据库、缓存层、测试凭据。例如,您需要使用正在运行的 Postgresql 或服务所需的任何其他数据库。对于其他第三方服务,如果可用,您可以使用他们的沙箱,否则为每个测试运行使用不同的配置(您也可以有多个配置并根据其他运行的测试选择它们)。在这种情况下,某些第三方服务会要求您拥有公共域/URL,您需要在公共 URL 后面配置您的服务。
一旦您配置了整个系统,您就可以开始使用 API 来使用测试脚本收集响应。可能有一段时间,API 可能无法为您提供您正在查看的确切数据,在这种情况下,您可以在代码中添加新的 API 或使用其他技术来收集数据,例如数据库查询,运行一些手动/使用 FTP 等的自动化脚本
推荐阅读
- python - 我们如何从 AirFlow DAG 获取脚本失败邮件?
- angular - 在Angular(INPUT)中将异步数据从父级传递给子级
- c# - 为什么我会收到错误“无法将类型 'Form.QueryExecute' 隐式转换为 'string'。” 在 C# 中创建数据库连接时?
- javascript - 即时编译为 WASM
- go - 为什么golang nacl box和sign包使用不同的key长度?
- php - 如何从集合结果数组中排除关系列-急切加载
- c# - C# Winform 单选按钮行为
- c# - WPF DataGrid动态列数,DataCell背景颜色根据值变化
- linux - /usr/bin/ld: /usr/include/c++/8/bits/stl_construct.h:107: 未定义对 *** 的引用
- c# - Xamarin C# Visual Studio - 自动 Mailto - 在代码后面向用户发送电子邮件?