【问题标题】:Writing unit tests for network related classes为网络相关类编写单元测试
【发布时间】:2009-06-25 00:49:18
【问题描述】:

我有一个负责网络通信的类。我想对其进行单元测试。

这是我为编写测试而陷入困境的地方,我必须实现一个与之通信的服务器,但这反过来又需要它自己的测试。

如何为这样的类编写测试?

【问题讨论】:

    标签: java unit-testing networking junit


    【解决方案1】:

    除非您正在编写低级驱动程序,否则您的类无疑依赖于其他类来进行实际通信。在那种情况下,我会使用依赖注入来提供这些类或围绕它们的包装器,如果它们不容易被模拟的话。在您的测试中,您将提供您所依赖的类的模拟版本(或者如果您不能模拟实际的类,则提供包装器)。验证您提供的模拟上的方法是否调用了具有正确参数的正确方法。确保你有足够的单元测试来满足你自己,你已经涵盖了来自真实依赖项的所有行为。这足以满足您的单元测试。

    您还需要一些集成测试。不幸的是,最简单的方法可能是开发一个完整的模拟服务器来与之通信。请注意,您的模拟服务器只需要实现接口——而不是另一端的实际代码。提供一些额外的方法来允许您为集成测试设置服务器,以便模拟服务器的预期行为发生。

    【讨论】:

      【解决方案2】:

      如果您单元测试负责网络通信的类,那么您测试您是否正确地进行通信。因此,提供一个模拟(如虚拟)服务器与其进行通信。您可以使用许多模拟库,例如 EasyMock 和 jMockit。如果您想测试与实际服务器的实际通信,那就是集成-测试。当然,单元测试所包含的确切定义因开发人员而异。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-22
        • 2011-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多