我对使用依赖注入很感兴趣但是我很困惑我应该如何处理那些不是用DI设计的外部库。
例如,如果我有一些代码构造了我项目范围内的对象,我可以使用一个接口,然后创建模拟版本以及这些版本的具体版本。
但是,相同的代码也可能使用外部库来写入数据库或调用API等等。外部库可能只提供具体的实现。
这意味着我的代码中会混合使用具体内容和抽象内容,这将迫使我在与代码的其余部分同时测试外部库。
我应该为所有外部类创建包装器,以便我可以注入模拟版本吗?这似乎做了很多工作。
答案 0 :(得分:1)
如果您必须创建具体的第三方依赖项的模拟以隔离您自己的单元,您可以使用模拟框架(例如使用检测的Mockito)非常轻松地完成此操作。
单元测试应该告知并强化您的设计决策,而不是驱动它们,您应该能够快速编写它们,以便将大部分精力集中在实际代码的设计和实现上。像Mockito这样的现代框架使这成为可能。
答案 1 :(得分:1)
您还可以使用Needle Framework轻松测试代码 - http://needle.spree.de/。它与Mockito和EasyMock完美集成。 Needle通过分析依赖关系和自动注入模拟对象来减少测试设置代码。