我正在编写一个Junit(4.x)测试来测试Web应用程序关闭时会发生什么。
当我点击浏览器中的网址时,收到一条消息“拒绝连接”。
我不确定在断言语句中要检查什么。
我是否检查此邮件的标头? - urlConnection.getResponseMessage()或
在测试用例之前说出(expected = java.net.ConnectException)。我觉得后者不够具体。
编辑:现在,我正在使用(expected = java.net.ConnectException)和assertEquals(502,urlConnection.getResponseCode)的组合。测试正在通过。
谢谢, Pratyusha。
答案 0 :(得分:2)
首先,您的单元测试不应该太依赖于外部实体。您所描述的是集成测试。
在经典单元测试中,您可以使用以下方法设置此方案:模拟HttpUrlConnection
。这可以编程为从所需的方法调用中抛出异常。如果您只是通过简单地确认抛出的异常类型而感到高兴,您可以始终在测试方法中捕获它,然后断言响应消息或您感兴趣的任何内容。
但是,从您的帖子中我不清楚您实际测试的是什么:依赖于服务器的Web客户端?一个调用另一个Web应用程序的Web应用程序不同的测试可能适用于不同的场景。
答案 1 :(得分:0)
junit中的集成测试很好。许多广泛使用的开源项目都使用这种方法。有关此方法的示例,请参阅CXF或Arquillian。
对于您的问题......您需要确定所需的行为,然后对此进行测试。
例如,在这种情况下,您可能希望测试服务器返回的响应代码。或者,如果“连接被拒绝”确实是期望的行为,那么测试(expected = java.net.ConnectException)就足够了。