伪装单元测试的构造函数

for*_*ran 3 java unit-testing design-patterns

我有一组在实例化时具有依赖关系的类,也就是说,在创建类型A的对象时,它还创建另一个类型B,随后创建其他类型为C的类,等等.

对于测试问题,我不需要所有级别的全部功能来测试上层,所以我可以使用存根或模拟,但是因为我new在构造函数中有明确的,所以除了更改之外我看不到直接的方法代码使用AbstractFactory并提供一个在测试时创建假货的代码.

那么,是否有任何"黑魔法"方法来破解Java类加载器,以便在实例化对象时创建虚假测试类而不是正常测试类new

谢谢!

Jon*_*eet 6

为什么不添加一个这些依赖项作为参数的构造函数,而不是在构造函数中自己创建它们?我个人会添加一个并删除另一个:)注入依赖项使代码更容易测试,将来更灵活(因为您可以在以后轻松注入不同的实现,而无需更改代码.)

  • 这就是大多数软件蹩脚的原因;) (6认同)
  • @fortran:不,这不是*显然矫枉过正.你有依赖关系,所以注入它们."没有多余装饰"的方式是直接在调用者中构建它们; 使用DI框架适用于较大的应用程序.什么*会有点矫枉过正IMO将正是你提出的建议:为了注入依赖关系*而不是真正方便的话,对语言进行操作. (2认同)