单元测试的虚与实

<o:p></o:p>仍然是“单元测试还是集成测试”,“什么时候用mock object”,这个老话题。对这个东西的理解见仁见智,不必求同。
首先,单元测试是设计技术,不是测试结束,是写在接口定义好,代码实现前的,在这个前提下讨论。

在设计的过程中,有些东西是实的,有些东西是虚的,参见下图

UI---JSP也好,swing也罢
DB---mysql,oracle,包括dal,dao层
框架---spring,hivemind,或其他种种

以上这些只是些许例子。这些东西是实的。
在你的设计空间里,你所有的构思、你的想象、你的设想,那是虚的(无贬义)。

这样就简单了,实的实测,虚的虚测。
UI的测试就直接跑起来去操作,数据库、DAO测试,用DBUNIT或者操作完了去看数据库(不必强求自动化)。 spring用它自己的AbstractDependencyInjectionSpringContextTests去测测看组件装配的对不对。

虚的用mock object,可用的库也不少,easymock真的很easy,测试单个接口很方便。   mock是“伪”的意思,正好跟“虚”配一对。

在理清概念、设计出接口后,实际实现前,用一堆mock的实现去跑一跑看行不行的通,是不是有什么潜在的问题等,非常有帮助,这是模拟执行的概念了。

对实的东西进行实的测试,使整个应用建筑在坚固的地基上,对虚的东西进行虚的测试,放飞思想的翅膀,在落地前,你可以有充分的自由改变轨迹、追求完美。

猜你喜欢

转载自notyy.iteye.com/blog/147603