我需要为单元测试提供某种活动协议,以便为非技术参与者提供额外的可跟踪性。。。
所以我需要的是,每个Assert还创建一个自定义日志条目。
assertj中有什么方法可以实现这一点吗?也许是某种听众,扩展。。。
目前团队使用的是普通的 JUnit 5
-我很想介绍一下 AssertJ
.
实际上,想要的行为是通过“重载”junitAssert实现的。
所以 Assertions.assertEquals(expected, actual)
有一种方法
MyAssertions.assertEqualsAndLog(Object expected, Object actual) {
log(); //do the logging
Assertions.assertThat(expected, actual)
}
但这并不是我想要的方式。
有谁知道更好的方法来实现这一点吗?
谢谢
3条答案
按热度按时间b4wnujal1#
在assertj中,如果您使用Assert描述,那么您可以打印它们或与您注册的任何使用者一起使用它们。
例子:
将打印此报告:
看到了吗https://assertj.github.io/doc/#assertj-核心Assert描述使用者
l2osamch2#
好吧,不幸的是没有用于事件/钩子/etc(与Assert结合使用)的机制。在资产中。
我发现第1518期描述了同样的行为。
rur96b6h3#
跟踪/计数/记录单个无故障Assert目前不可能的原因是所有(?)Assert库的通用约定非常简单:抛出
AssertionError
失败时,不要为成功做任何事。对于junit来说,在Assert级别上看到成功事件需要一种将Assert与框架耦合的新方法。鉴于opentest4j的使用非常缓慢,lib维护者之间可能永远不会达成一致。
也就是说,任何一个单独的框架,比如assertj,都可以提供一种对成功事件做出React的机制。你只需要说服他们实现它——正如另一个答案中的github问题所示。