也许我的搜索完全失败了,但是我找不到任何与如何为 Java 类/方法编写单元测试相关的文档或讨论,而 Java 类/方法又会调用其他非私有方法。看起来,Mockito 的立场是,如果必须使用间谍来测试需要模拟内部方法调用的方法,则设计可能存在问题(不是真正的 OO)。我不确定这是否总是正确的。但使用间谍似乎是实现这一目标的唯一方法。例如,为什么你不能有一个“包装器”风格的方法,它又依赖于其他方法来实现原始功能,但另外提供功能、错误处理、日志记录或依赖于其他方法的结果的不同分支等?
所以我的问题有两个:
- 有一个内部调用其他方法的方法是设计和实现不佳的代码吗?
- 如果一个人选择了 Mockito 作为他们的模拟框架,那么为这种方法编写单元测试的最佳实践和/或方法是什么(假设它本身是一个好主意)?
这可能是一个困难的要求,但我希望那些决定回答的人不仅仅是重新发布 Mockito 的措辞和/或对间谍的立场,因为我已经知道这种方法和意识形态。另外,我也使用过 Powermockito。对我来说,这里的问题是 Mockito 开发了这个框架,必须创建额外的解决方法来支持这个需求。所以我想我想要回答的问题是,如果间谍是“坏的”,并且 Powermockito 不可用,应该如何对调用其他非私有方法的方法进行单元测试?