在集成测试(JDK 6)中,我试图捕获所有传出的TCP连接并模拟它们。看起来我应该使用java.net.Socket#setSocketImplFactory()
方法。目前工作正常,但我无法理解如何访问原始工厂,以便实例化原始JDK提供的SocketImpl
类。我需要这个主要是因为我想让一些连接自由地出去,而不是嘲笑。您能就这个问题提出一些手册/指南/说明吗?
答案 0 :(得分:1)
我会为Socket创建一个Socket服务,而不是模拟Socket。这可以捕获所有写入的数据并以您希望的任何方式进行回复。它可以在同一个测试中运行,也可以在同一个线程中运行。
答案 1 :(得分:0)
根据javadoc,您应该可以使用SocketFactory#getDefault()来获取您环境的默认SocketFactory。
BTW:您可能还想看看这个RFE / bug,它声明SocketImplFactory基本上是一个死胡同:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4245730答案 2 :(得分:0)
查看Socket类的源代码,没有原始工厂 - 构造函数检查factory
是否为null,如果是,则只需将impl
指定为新的PlainSocketImpl()
。