我认为,依赖项注入的主要好处之一是可以将模拟和/或存根对象注入代码中,以提高可测试性,增加测试覆盖率并编写更好,更有意义的测试。 但是,有时候您会遇到一些不使用依赖注入的传统代码,而是通过组合而不是聚合将它们结合在一起。
发生这种情况时,您有三种选择:
- 忽略该问题,不编写任何测试。
- 疯狂地进行重构,更改所有内容以使用依赖项注入。
- 使用PowerMock模拟构造函数
显然,选项1并不是一个严肃的选项,尽管我建议重构以将所有内容移至依赖项注入,但这需要时间,而且您必须务实。 这就是PowerMock的用处。此博客演示了如何使用PowerMock模拟构造函数,这意味着当您的代码调用new时,它不会创建真实的对象,而是会创建模拟对象。
为了证明这个想法,我们首先需要测试一些类,如下所示。
public class AnyOldClass {
public String someMethod() {
return "someMethod";
}
}
public class UsesNewToInstantiateClass {
public Str