2009-06-25 76 views
1

我有一个负责网络通信的类。我想为它进行单元测试。编写网络相关类的单元测试

这里是我卡住的地方,为了写一个测试它,我必须实现一个服务器进行通信,但是反过来需要进行自己的测试。

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

回答

5

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

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

1

如果你单元 -testing一类是负责网络通信,那么你只测试你正在做正确的通信。因此,提供一个模拟(如虚拟)服务器以便与之通信。有很多可以使用的模拟库,例如EasyMock和jMockit。如果你想测试与实际服务器的实际通信,那么这就是集成-测试。当然,单元测试涵盖的确切定义因开发者而异。