1

我想使用Approval Tests来验证日志输出。处理日志文本的动态内容(例如时间戳)的首选方法是什么?包含的FileApprover总是比较文件是否完全相等。

4

2 回答 2

2

有几个解决方案。在这里,它们按优先顺序排列:

  1. 不要在测试期间记录动态内容。

  2. 在测试期间伪造动态内容,因此输出是一致的。

  3. 在比较之前清理日志文件。这通常看起来像:

    ScrubFile("log.txt", "log_scrubbed.txt", new DateScrubber(), new GuidScrubber())
    
于 2017-03-31T11:39:16.520 回答
1

该概念与llewellyn falco所描述的相同。但是,Approvals.Java 中的 API 已更改。

val dynamicContentScrubber = RegExScrubber(pattern, replacement)
val scrubberOptions = Options(dynamicContentScrubber)

Approvals.verify(content, scrubberOptions)

Approvals.Java 有一些内置的清理器,例如DateScrubberGuidScrubberRegexScrubber. org.approvaltests.core.Scrubber您可以通过实现接口来编写自己的。

于 2021-05-19T02:43:36.817 回答