Java Junit测试用例:连接被拒绝的用例

Java Junit测试用例:连接被拒绝的用例,java,unit-testing,connection,junit4,Java,Unit Testing,Connection,Junit4,我正在编写一个Junit(4.x)测试来测试web应用程序关闭时会发生什么 当我点击浏览器中的url时,我收到一条消息,上面写着“连接被拒绝” 我不确定在assert语句中检查什么 是否检查此邮件的标题?--urlConnection.getResponseMessage()或 在测试用例之前只需说(expected=java.net.ConnectException)。我觉得后者不够具体 编辑:现在,我正在使用(预期=java.net.ConnectException)和assertEqual

我正在编写一个Junit(4.x)测试来测试web应用程序关闭时会发生什么

当我点击浏览器中的url时,我收到一条消息,上面写着“连接被拒绝”

我不确定在assert语句中检查什么

是否检查此邮件的标题?--urlConnection.getResponseMessage()或

在测试用例之前只需说(expected=java.net.ConnectException)。我觉得后者不够具体

编辑:现在,我正在使用(预期=java.net.ConnectException)和assertEquals(502,urlConnection.getResponseCode)的组合。考试通过了

谢谢,
首先,您的单元测试不应该太依赖于外部实体。您描述的是一个集成测试

在一个经典的单元测试中,您可以使用一个mock
HttpUrlConnection
来设置这个场景。这可以编程为从所需的方法调用引发异常。如果您仅仅通过确认抛出的异常类型而不满意,那么您总是可以在测试方法中捕获它,然后断言响应消息或您感兴趣的任何内容


然而,从你的帖子中我不清楚你到底在测试什么:一个依赖于服务器的web客户端?调用另一个web应用的web应用?不同的测试可能适合不同的场景。

junit中的集成测试可以。许多广泛使用的开源项目都使用这种方法。有关此方法的示例,请参见CXF或Arquillian

对于你的问题。。。您需要确定期望的行为是什么,然后进行测试


例如,在本例中,您可能需要测试服务器返回的响应代码。或者,如果“拒绝连接”确实是需要的行为,那么测试(预期=java.net.ConnectException)就足够了。

我同意这是一个集成测试。遗憾的是,我在这里别无选择,只能使用Junit.True。对于这种情况,Pratyusha可能应该使用JMeter或HTTPUnit。@Pratyusha,您可以使用JUnit实现集成测试(尽管您描述的任务确实有更好的选择-我会将Selenium添加到列表中)。然而,了解单元测试和集成测试之间的差异是很好的。他们通常有不同的资源需求和使用模式。彼得:我理解你的观点,也同意你的观点。但这是一个要求,我必须在JUnit中完成。至少现在是这样。同时,我也在探索Selenium/JMeter/HTTPUnit。谢谢。@Pratyusha,我理解。我不是想说你应该不遵守要求——如果我的评论被误解了,很抱歉。