当前位置: 首页 > 知识库问答 >
问题:

AssertJ SoftAssertions:收集AssertionError后如何执行自定义代码?

太叔飞翰
2023-03-14

问题:我想将TestNG断言更改为AssertJ,将SoftAssertJ中的SoftAssertions更改为AssertJ,但我不知道在收集AssertionError后,我需要从SoftAssertions中重写什么来执行自定义代码。具体来说,我想为每个收集到的错误截图。我使用Selenium实现自动化,并需要添加用于报告的屏幕截图。我试图覆盖AbstractSoftAssertions中的每个fail方法,但没有帮助。

实际:我只在@After方法中获得了屏幕截图。

预期:我需要获得每个软断言错误的屏幕截图。

当前的设置使用Java、TestNG、Selenium和Allure report。

共有1个答案

韩麒
2023-03-14

有两种选择:

  • 在您的SoftAssertions实例上调用setAfterAssertionErrorCollected,提供您自己的AfterAssertionErrorCollected实现(可以是lambda)。
  • 扩展AbstractSoftAssertions并覆盖onAssertionErrorCollected

这两种方法都允许您为每个断言错误提供自己的执行逻辑。

您可以在AssertJ留档中找到有关这两种解决方案的示例。

 类似资料:
  • 我想使用Prometheus的JMX导出器收集使用Prometheus的自定义应用程序度量。我有一个应用程序,我已经打包到一个jar文件--它公开端口8989并声明Prometheus指标,但不公开Prometheus要刮的endpoint(根据我所读到的,Prometheus javaagent负责处理这个问题)。 我不确定文件应该是什么样子。另外,为什么建议使用库(并在默认注册表下注册新的度量

  • 如何将Spark Streaming指标汇到执行者的StatsD汇? 类似于其他报告的问题(未找到接收器类,接收器类在执行器中),我可以获得驱动程序指标,但执行器在我的设置中抛出< code > ClassNotFoundException : > < li>StatsD sink类是用我的Spark-Streaming应用程序(< code>my.jar)编译的 < li> 运行时使用: (将包

  • 问题内容: 我有以下课程。 我希望能够按年龄分组,然后收集人员名称列表,而不是人员对象本身。全部以一个漂亮的lamba表达式表示。 为了简化所有步骤,我链接了当前的解决方案,该解决方案按年龄存储分组的结果,然后对其进行迭代以收集名称。 当前解决方案 不理想,为了学习,我想有一个更优雅,更有效的解决方案。 问题答案: 将Stream与分组时,可以使用自定义对值指定归约运算。在这里,我们需要使用,它需

  • 为什么Spark有一个工作节点和四个执行器,每个执行器有一个核心,却无法处理自定义接收器?? 如果执行器在Spark Streaming中有一个单核,那么不通过自定义接收器处理传入数据的原因是什么? 我正在独立模式下运行Spark。我在Spark流媒体应用程序的自定义接收器中获取数据。我的笔记本电脑有4个内核。 master="火花://lappi: 7077" $spark_path/bin/s

  • 问题内容: 我想创建自己的自定义注释。我的框架是独立Java应用程序。当有人注释他的pojo类时,后面的“隐藏”代码将触发方法。 例如,今天在Java EE中,我们具有注释。并且,当您使用注释类并另外实现MessageListener接口时,将触发一个背后的代码。当消息从队列/主题到达时。 如何创建批注(),可以将其添加到pojo并实现。 我希望得到的结果是(我的)“隐藏”代码的触发器,该触发器将

  • 我正在与: Spock Core 斯波克报告 斯波克Spring Spring MVC测试 我有以下代码: 我知道Spock提供了through()方法,因此我能够执行以下操作: 遗憾的是,抛出对AssertionError不起作用。 如果我使用测试方法不通过,唯一的方法是通过,但我无法从AssertionError获得错误消息