编写网络相关类的单元测试

时间:2009-06-25 00:49:18

标签: java unit-testing networking junit

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

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

你如何为这样的课程编写测试?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

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