我最近不得不重构一个类 [X] 并改进它的单元测试,并在这样做时发现为了从测试中全面覆盖该类,我需要模拟该类的 3 个不同组件的行为. 为了论证,类 [A]、[B] 和 [C]。因为 [A]、[B] 和 [C] 都在 [X] 中构建,我决定为它们中的每一个传递一个供应商,从而允许单元测试模拟供应商并实现类的完整测试覆盖。
然而,我的一位同事建议我可以为 [A]、[B] 和 [C] 中的每一个添加包可见的 getter 方法来处理对象构造,然后在创建 [ 的实例时从单元测试中覆盖这些方法X] 进行测试。
我可以看到这消除了添加 Supplier 实现的额外复杂性,但我觉得这不必要地暴露了 [X] 的实现。这些方法中的一种是否被认为比另一种更好?我正在从事的项目使用我不太熟悉的 Spring,但我想知道是否有更好的解决方案。
有没有人对此有一些可靠的建议?