【发布时间】:2015-04-09 01:33:13
【问题描述】:
我有一个外观类,它实现了以下方法:getTotalNumOfItems(Query query)。门面位于其他两个服务类的前面,它们实现了相同的方法。根据query 参数的类型,外观决定是委托给其中一个服务还是另一个。
我的困境是如何为外观编写单元测试,而测试不必知道项目数是如何得出的。否则,它看起来就像一个集成测试,而不是一个单元测试。
我使用 Mockito 提供了这两个服务的就地模拟版本。但是,当我为此编写单元测试时,我唯一可以测试的是“验证外观是否返回一个数字,等于其中一个模拟返回的数字(取决于查询类型)”。似乎没有办法以比这更不可知的方式测试外观。
我在这里做错了吗?我应该感到担心吗?我想,外观的本质是,它的效率只能通过了解它委托给的类来验证。当然,我确保在两个服务中为相同的方法编写单元测试。
【问题讨论】:
-
您需要测试单个服务对象而不是外观本身。
-
所以我做到了。然而,我想确保外观总是决定委派给正确的服务
-
不,您不应该这样做,否则您没有做 UT。 UT 只是类和特定方法。
标签: java unit-testing mockito facade