【发布时间】:2019-12-03 14:38:05
【问题描述】:
我正在使用单元测试和覆盖率报告测试我的 Spring Boot 应用程序,我的分支覆盖率 +85%。在某些情况下,在测试其他方法(例如映射器、实用程序方法等)时会覆盖某些方法。
例如,在服务方法中,我调用了映射器和实用程序方法,这些方法在覆盖率报告中被标记为已覆盖,因为我测试了该服务方法。
我的问题是,为这些映射器和实用程序方法编写额外的测试是否有意义,因为它们已经包含在服务测试中?
【问题讨论】:
-
好吧~如果你的一种方法失败了——你能从你的方法中分辨出哪种方法失败了吗?
-
不,如果服务方法测试失败,我不知道是因为实用程序,映射器还是一些内联逻辑。
-
单元测试应该测试每个单独的 unit 或组件 - 所以我会说最好尝试为单独的方法编写单元测试 - 然后让你的服务方法测试。双重覆盖将比偷工减料“更安全”。但是,您仍然比那些不进行单元测试的人好 85%。 :)
-
我同意你应该“测试它。”如果另一个测试恰好“覆盖它”,对我来说那是巧合。对于每一件事,你都应该有充分地运用那件事并且与那件事明确相关的测试。如果一段特定的代码因此被多次“覆盖”,那很好。
-
"在某些情况下,某些方法在测试其他方法时会被覆盖" - 你应该嘲笑那些你认为被覆盖的人。想象一下,您正在测试那些其他方法,并且由于“覆盖”方法而失败。一起测试两者将是测试它们的集成,而不是单元本身。
标签: java unit-testing test-coverage