【问题标题】:Junit test case: Connection refused caseJunit测试用例:连接被拒绝的情况
【发布时间】:2010-09-07 07:38:36
【问题描述】:

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

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

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

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

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

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

谢谢, 普拉秋沙。

【问题讨论】:

    标签: java unit-testing connection junit4


    【解决方案1】:

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

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

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

    【讨论】:

    • 我同意这是一个集成测试。可悲的是,我别无选择,只能使用 Junit。
    • 是的。对于这种情况,Pratyusha 可能应该使用 JMeter 或 HTTPUnit。
    • @Pratyusha,您可以使用 JUnit 实现集成测试(尽管您描述的任务确实有更好的选择 - 我会将 Selenium 添加到列表中)。但是,最好了解单元测试和集成测试之间的区别。它们通常具有不同的资源要求和使用模式。
    • 彼得:我理解你的观点并同意你的看法。但这是一个要求,我必须在 JUnit 中完成。至少现在。同时,我也在探索 Selenium/JMeter/HTTPUnit。谢谢。
    • @Pratyusha,我明白了。我并不是说你应该不遵守要求 - 如果我的评论被误解了,请见谅。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 1970-01-01
      • 2020-06-04
      • 2017-08-08
      • 2023-03-27
      • 1970-01-01
      • 2023-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多