gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:24 26 4
gpt4 key购买 nike

我已经使用 EasyMock 编写了很多 Mock 对象。然而,我经常发现编写部分模拟非常耗时,而且感觉不“正确”。

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

你怎么看?部分 mock 是好事还是坏事?而且,如果好/坏,为什么?如果您发现因为您只想模拟几个方法而无法模拟该对象,您会有什么建议?

最佳答案

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

尝试识别相关的功能组,并将它们分解成可以独立进行单元测试的更小的辅助类。这将使代码更易于理解,使您能够编写更细粒度的单元测试,并且您可能会在将来的某个时候找到机会在不同的上下文中重用您拆分出来的功能。如果您使用的是 Spring 或 Guice 之类的依赖项注入(inject)框架,则在您的应用程序运行时很容易将这些对象重新组合在一起。

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

关于java - Easymock 部分模拟(EasyMock ClassExtension),好还是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1763370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com