问题描述
问题:我想将 TestNG 断言从 AssertJ 更改为 AssertJ 和 SoftAssertions,但我不知道我究竟需要从 SoftAssertions 覆盖什么才能在 AssertionError
之后执行自定义代码集。具体来说,我想为每个收集的错误获取屏幕截图。我使用 Selenium 进行自动化,需要添加屏幕截图以进行报告。
我试图覆盖 fail
中的每个 AbstractSoftAssertions
方法,但没有帮助。
实际:我只在 @After
方法中获得了屏幕截图。
当前设置是使用 Java、TestNG、Selenium 和 Allure 报告。
解决方法
有两种选择:
- 在您的
SoftAssertions
实例上调用setAfterAssertionErrorCollected
,提供您自己的AfterAssertionErrorCollected
实现(可以是 lambda)。 - 扩展
AbstractSoftAssertions
并覆盖onAssertionErrorCollected
。
这两种方式都允许您提供自己的逻辑以在每个断言错误时执行。
您可以在 AssertJ documentation 中找到有关这两种解决方案的示例。