2024 年 11 月 14 日 作者:Lukas Hanusovsky
值得一提的是,在使用当前 测试套件 时,存在一些明显的缺点。首先是各种配置和在 Arquillian 框架 之上进行的添加的复杂性。这些更改使测试套件功能强大,但缺点是在没有适当文档的情况下,对于初学者来说几乎难以理解。其次,同样重要的是,Arquillian 框架 已不再完全受支持。其他需要提及的是复杂的执行系统,您需要在其中指定要测试的内容,然后是具有共享配置的抽象类,以及缺少添加自定义扩展的选项。
Keycloak 团队于 2024 年 5 月开始努力设计新的测试框架。最初是从原型开始,以验证我们的想法是否可行。该原型是一个基于 JUnit5 测试框架 的 JUnit5 Extension,专门用于实现 JUnit5 回调类,这些类扩展了默认的测试生命周期功能,并提供了自定义注入注解,例如 @KeycloakIntegrationTest、@InjectWebDriver 或 @InjectRealm。
在成功的测试轮次之后,我们继续进行概念验证,扩展功能列表以支持多种服务器模式、不同的数据库和 WebDriver、客户端和用户设置、SmallRye 配置支持、基于 Nimbus SDK 的 OAuthClient(此功能仅为预览版)等。当前已实现功能的完整列表如下:
它已存在于主分支和 Keycloak 每夜构建版本中。
我们在新的测试框架中已经有足够的能力开始从旧的 testsuite 迁移一些测试;事实上,我们已经迁移了我们的第一个测试。我们计划从旧的 testsuite 中一次迁移一个包,从 admin
测试开始,然后转向 forms
和 oauth
包。在执行此操作时,我们将扩展测试框架的功能。
我们知道即将推出的一些功能包括:
一种更轻松地部署自定义提供程序的方法,无需首先构建提供程序的 Maven 版本
改进的日志记录,使其可以轻松地从测试以及 Keycloak 配置日志记录
轻松测试 OAuth 和 OpenID Connect,包括模拟应用程序
扩展以允许在被测服务器上运行代码,当仅通过远程接口进行测试不容易时
我们还有一些更长期的计划要实现:
提供程序测试,可用于通过直接调用提供程序来轻松测试提供程序
并行执行测试,以充分利用多核来减少测试执行时间
我要感谢所有将概念验证组合在一起并使其成为现实的人:Miquel、Simon、Filip、Moises、Jon 和 Pedro。特别感谢 Stian,他领导了技术设计并提出了非常巧妙的想法,将项目提升到了另一个层次。
感谢您的反馈。
祝您使用愉快!