在集成测试(JDK 6)中,我试图捕获所有的出站TCP连接并进行模拟。看起来我应该使用java.net.Socket#setSocketImplFactory()
方法。目前可以正常工作,但是我不知道如何获取原始工厂的访问权限,以便实例化原始的JDK提供的SocketImpl
类。我需要这个主要是因为我希望一些连接能够自由地发送,而不进行模拟。您能否提供有关此问题的一些手册/指南/说明书?
在集成测试(JDK 6)中,我试图捕获所有的出站TCP连接并进行模拟。看起来我应该使用java.net.Socket#setSocketImplFactory()
方法。目前可以正常工作,但是我不知道如何获取原始工厂的访问权限,以便实例化原始的JDK提供的SocketImpl
类。我需要这个主要是因为我希望一些连接能够自由地发送,而不进行模拟。您能否提供有关此问题的一些手册/指南/说明书?
与其嘲笑Socket,不如为Socket创建一个Socket服务。这样可以捕获所有写入的数据,并以任何你希望的方式进行回复。它可以在同一测试中运行,可能在同一线程中运行。
SocketImplFactory
,它生成 SocketImpl
类的实例。java.net.Socket
类与这一切无关。 - yegor256查看Socket类的源代码,没有原始工厂 - 构造函数检查factory
是否为空,如果是,则将impl
分配为新的PlainSocketImpl()
。