【问题标题】:When to choose static utility and when spring component何时选择静态实用程序以及何时选择弹簧组件
【发布时间】:2020-12-01 14:12:35
【问题描述】:
我们有一个遗留项目,它在该项目中使用了许多静态实用程序。
现在我们要写这个项目的Junit,会做一些重构。
一些静态实用程序类在编写某些类的 Junit 时会产生问题。
我们是否应该将所有这些静态实用程序重构为 Spring 组件?
我有几点想法:
- 在编写
Junit 时,它还会调用静态实用程序。它是否仍被视为单个 Junit 或集成测试,因为它会测试多个公共方法的功能?
- 一些实用程序还使用额外的依赖项,因为这是在单独的文件中,我们无法模拟这些依赖项,因此 Junit 失败。
- 那些静态工具的Junit会写在单独的文件中,那为什么要在多个文件中测试这些静态工具呢?
【问题讨论】:
标签:
spring
spring-boot
junit
mockito
refactoring
【解决方案1】:
我们是否应该将所有这些静态实用程序重构为 Spring 组件?
-
恕我直言:如果目前这些静态实用程序不依赖于 Spring,则不应添加额外的冗余依赖项。
-
您建议重构以便能够编写重构测试。但是你不想在没有测试的情况下进行重构。你在这里看到递归吗? )
我们不能模拟这些依赖项
- 难道不是考虑更好的设计以允许模拟外部依赖项的理由。也许它可能是即将到来的重构的一部分?
为什么要在多个文件中测试这些静态实用程序?
您可以构建测试one way or another。我现在更重要的是定义目标覆盖范围并达到它。例如。您可以将目标覆盖率指定为:100% 类、70% 分支、80% 行等。
祝测试和重构顺利!