我开始尝试学习tdd,并希望在实际项目中使用它。因此,我决定用Java编写一个简单的客户端和服务器文件同步程序。在完成了客户端部分后,我在编写服务器部分时遇到了困难。
为了对逻辑进行单元测试而不访问外部资源,我将它们放在单独的类中,以便可以模拟它们。到目前为止,一切都很好。
现在我的问题是: 这张图片展示了我想象的整个架构,其中绿色部分已经完成,黄色部分尚未实现。
在我的情况下,我需要向
编辑:类ClientConnectionHandler仅负责服务器端的文件同步逻辑,也就是说:按照自己的小协议从客户端接收文件。
为了对逻辑进行单元测试而不访问外部资源,我将它们放在单独的类中,以便可以模拟它们。到目前为止,一切都很好。
现在我的问题是: 这张图片展示了我想象的整个架构,其中绿色部分已经完成,黄色部分尚未实现。
在我的情况下,我需要向
RemoteServer
传递ConnectionManager
。ConnectionManager
需要一个FileAdapter
和一个Communicator
,以创建ClientConnectionHandler
。对我来说,这听起来有点过于复杂。这种情况在tdd'ing中正常吗?还是我在保持可测试性方面做错了什么?编辑:类ClientConnectionHandler仅负责服务器端的文件同步逻辑,也就是说:按照自己的小协议从客户端接收文件。
ClientConnectionHandler
类只负责服务器端文件同步逻辑,也就是按照自己的小协议从客户端接收文件。我无法想到将其分解为几个不同类的方法。有什么提示吗? - b1nhFileSystemAdapter
,将网络通信委托给SocketCommunicator
,因此在处理程序中接收文件可能看起来像fileadapter.writeToFile(communicator.getbytes,filename)
。我认为这样做不会违反SRP原则。 - b1nh