无法在Eclipse中运行junit测试

时间:2009-01-08 14:21:10

标签: windows eclipse sockets junit

我和我的同事在Eclipse中运行junit测试或tomcat时出现间歇性问题。

有时测试会运行。 有时他们不会。 似乎没有模式,我们没有同步。我的IE可能会运行而其他人会失败。

停止/启动Eclipse可以解决问题(有时)。 拔出网线始终解决问题(当它出局时)。

失败时会发生以下情况。 在尝试运行该类时,控制台屏幕显示红色框。 控制台屏幕保持空白约30秒,然后出现以下内容:

  

无法连接:: 2083
  java.net.ConnectException:连接   拒绝:联系   java.net.PlainSocketImpl.socketConnect(母语   方法)at   java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)     在   java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)     在   java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)     在   java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)     在   java.net.Socket.connect(Socket.java:520)     在   java.net.Socket.connect(Socket.java:470)     在   java.net.Socket中。(Socket.java:367)     在   java.net.Socket中。(Socket.java:180)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.connect(RemoteTestRunner.java:560)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:377)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

端口号各不相同。 我发现了一个论坛帖子,告诉我这样做http://support.microsoft.com/kb/135982 但这没效果。

我们都在基于Microsoft XP的机器上通过连接到互联网 ISA服务器/代理。 我正在运行Eclipse 3.3.3和MyEclipse 6.0.1

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

我专注于junit而不是tomcat,因为它更快更好更容易重现。 是的,我没见过McQueeney的链接。

当你从Eclipse运行junit时,我们已经做了一些挖掘和有趣的事情,Eclipse决定去&检查更新,是的,这是正确的 - 每次你运行一个junit(&我猜tomcat和其他人)。

我们通过ISA服务器删除了同事对WWW的访问限制。看哪,问题就消失了。

我们仍在监控此问题,看看它是否是解决方案。 看这个空间。

我已经尝试过查看Eclipse设置,看看我是否可以阻止它每次都到WWW,但还没有看到合适的选项。

答案 1 :(得分:0)

一些建议......:

你看过tomcat日志吗?

你在其中看到一些ClientAbortException: java.net.SocketException: Broken pipe.吗?

看起来服务器认为客户端有时会关闭连接。 并且客户端正在通过服务器重置连接(连接重置),并且服务器有时没有监听(连接被拒绝)。

如果您从防火墙/代理服务器后面进行测试,则可能需要向TomCat提供防火墙/代理服务器主机名和端口号。

Restarting eclipse should be enough

  

显然,Eclipse中的JUnit运行程序线程附加到Eclipse服务器线程以运行测试。似乎客户端线程试图连接到错误的端口(3393)或者已经在端口3393上侦听运行时请求的服务器线程失败。

解决方案McQueeney发现is here(谢谢Archive.org!)

我觉得有趣的一个建议是:

  

我不得不改变我的Eclipse项目使用的jre,以确保JUnit和我的项目使用相同的jre。重新启动Eclipse后,错误消失了。

我希望你能找到明确的原因。

答案 2 :(得分:0)

当我的网络驱动程序坏了时,我遇到了同样的问题。

JUnit和Eclipse通过ICP(InterProcess Communication)进行通信,更好地说:通过TCP。 要成功运行它,您需要修复网络驱动程序。

尝试重新安装TCP / IP协议或将其转回系统还原点。

祝你好运!

答案 3 :(得分:0)

所以只有与互联网连接,你的JUnit才有效吗? 或者它是一次性动作,现在,它没有互联网连接吗?

奇怪的世界......日志文件中是否有任何提示?