1

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

当我在浏览器中点击 url 时,我收到一条消息说“连接被拒绝”。

我不确定要在断言语句中检查什么。

我是否检查此消息的标题?-- urlConnection.getResponseMessage() 或

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

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

谢谢,普拉秋莎。

4

2 回答 2

2

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

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

但是,从您的帖子中,我不清楚您实际测试的是什么:依赖于服务器的 Web 客户端?一个调用另一个 Web 应用程序的 Web 应用程序?不同的测试可能适用于不同的场景。

于 2010-09-07T07:49:18.157 回答
0

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

对于您的问题...您需要确定所需的行为是什么,然后对此进行测试。

例如,在这种情况下,您可能想要测试服务器返回的响应代码。或者,如果“连接被拒绝”确实是所需的行为,那么测试 (expected = java.net.ConnectException) 就足够了。

于 2010-09-07T10:54:53.860 回答