我正在测试一个小型代理服务器程序,我的问题是测试会启动代理到某个端口。我每次都可以使用不同的端口,并且我可以在同一个端口上监听两个服务器。如何让jUnit(在Eclipse中)一个接一个地运行测试而不是同时运行?
答案 0 :(得分:1)
JUnit一次只运行一个测试,除非你做了一些特别的事情,否则它会做。在您的情况下可能发生的情况是,在第二次测试运行之前,为一次测试启动的代理没有停止,或者没有及时停止。
编辑:在回复您的评论时,有几种方法可以解决这个问题。一种是将测试放在与类相同的包中,这样就可以使用一个包私有方法(这意味着它没有公共私有或其他任何东西的声明)关闭套接字并从测试中调用该方法,所以它已关闭,但它不是公共API的一部分。
另一种选择是在构造函数中传入一个套接字生成器。在生产中你可能没有传入,而只是有一个内部实现,但是在测试中你传递一个由你的测试代码创建的,并且你的测试代码会在测试结束时关闭它。
答案 1 :(得分:1)
我之前看过套接字的这种问题。在不同的操作系统关闭端口可能需要比VM说的更多的时间。我建议你让测试睡眠和/或超时,直到他们可以打开服务器端口。我知道这是一个蹩脚的解决方案。