JUnit测试以网络连接错误结束

时间:2009-12-25 10:46:37

标签: java eclipse junit

我正在eclipse中为我的Java项目运行一些JUnit 4测试,我知道这项测试在两天前没有问题。

但是,今天我收到了错误:

Could not connect to:  : 40212          
java.net.SocketException: Network is unreachable
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:525)
    at java.net.Socket.connect(Socket.java:475)
    at java.net.Socket.<init>(Socket.java:372)
    at java.net.Socket.<init>(Socket.java:186)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.connect(RemoteTestRunner.java:570)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:381)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

测试和代码都没有对网络做些什么。

用于安装新软件的eclipse对话框也无法连接到更新站点,SVN插件也无法连接到存储库。可以访问SVN存储库,我已经使用cli-svn程序进行了检查。日食中的代理被禁用。

所以我的问题是,为什么JUnit想要首先连接到互联网(如何离线工作甚至可能......)我可以做些什么来找到问题的根源吗? (我的计划B是删除eclipse并重新安装它)

4 个答案:

答案 0 :(得分:3)

我怀疑Junit是作为一个单独的进程在同一台机器上启动的(注意上面对RemoteTestRunner的引用),然后Eclipse将通过套接字与它通信。

因此,您的计算机上的TCP堆栈存在一些问题。你没有网络资源吗?有什么东西在吸引这些吗?

netstat可能在这里有用。或者简单的重启?

答案 1 :(得分:2)

Eclipse为什么要连接到互联网的问题的答案是Eclipse根本不连接到互联网,然而 Eclipse有一个特殊的JUnit测试监听器与之通信运行JUnit测试的JVM。这个测试监听器在 localhost 上打开一个套接字(我不是100%确定服务器套接字在哪一侧,但这可能无关紧要。)

我认为你最终遇到网络问题,导致Eclipse进程无法在localhost上打开套接字。在启动/关闭VPN之后以及从暂停/恢复周期回来后,我遇到了类似的问题。

我先尝试重启。如果这不起作用,我会尝试从不同的工作区运行(运行... / eclipse.exe -data path /到/ new / workspace)。请记住,卸载 Eclipse中没有任何意义。只需在某处解压缩一个新的Eclipse,然后尝试从那里运行。

答案 2 :(得分:0)

您是否尝试过针对您尝试执行的测试的“运行配置”? (即右键单击测试并选择“运行方式&gt;运行配置”)也许有一些设置已经有点乱。也许“测试”选项卡中的“测试运行器”设置有错误配置?

答案 3 :(得分:0)

在我的Windows 7 x64机器上我使用单独的防火墙阻止javaw.exe出于某些奇怪的原因,在解锁后,它再次起作用。不认为防火墙会阻止机器内部插槽通信