java-Easymock部分模拟(EasyMock ClassExtension),好还是坏?

我已经使用EasyMock编写了很多Mock对象.但是,我经常发现编写局部模拟非常耗时,并且感觉不对.

我会说这是一个设计错误,因为我尝试模拟的类将多个关注点合并为一个关注点,因此,我应该创建单独的类以分离关注点.

你怎么看?部分嘲笑是好事还是坏事?而且,如果好/不好,为什么呢?如果您发现由于只想模拟一些方法而无法模拟对象,您会提出什么建议?

解决方法:

如果您发现自己定期创建部分模拟,则可能表明有太多的状态和功能被扔给了少数类.这会使您的代码难以维护,难以推理,因此难以进行单元测试.如果您以后发现系统中的某些其他组件需要其中一个大类中包含的功能的子集,则也可能导致代码重复或循环依赖.

尝试确定相关的功能组,并将其分为较小的帮助程序类,可以单独进行单元测试.这将使代码更易于理解,使您能够编写更细粒度的单元测试,并且将来可能会发现有机会重用在不同上下文中拆分的功能.如果您使用的是Spring或Guice这样的依赖注入框架,则在应用程序运行时将这些对象重新连接在一起很容易.

找出重构大型班级的最佳方法是人们从经验中学到的东西.通常,尽管如此,我尝试查看类在做什么,并为类在处理中的不同阶段扮演的不同角色命名.然后,我为这些角色创建新的类.例如,如果我有一个类可以读取服务器日志文件并在找到某些条目时通过电子邮件将其发送给管理员,则可以将其重构为一个知道如何解析日志文件的类,第二个类用于查找触发器条目,还有三分之一知道如何通知管理员.技巧是限制每个类中包含多少“知识”.这也使您有机会抽象出一般概念.例如,通过以这种方式拆分类,将来可以支持不同的通知机制或各种触发条件,而不会影响您的日志解析类或其单元测试.

上一篇:java-EasyMock / PowerMock导入问题


下一篇:java-检查EasyMock模拟是否处于重播模式/状态