单元测试的必要性

ChannelHandler 是 Netty 应用程序的关键元素,所以彻底地测试它们应该是你的开发过程的一个标准部分。

最佳实践要求你的测试不仅要能够证明你的实现是正确的,而且还要能够很容易地隔离那些因修改代码而突然出现的问题。这种类型的测试叫作单元测试。

虽然单元测试没有统一的定义,但是大多数的从业者都有基本的共识。其基本思想是,以尽可能小的区块测试你的代码,并且尽可能地和其他的代码模块以及运行时的依赖(如数据库和网络)相隔离。

如果你的应用程序能通过测试验证每个单元本身都能够正常地工作,那么在出了问题时将可以更加容易地找出根本原因。

在本章中,我们将学习一种特殊的Channel 实现——EmbeddedChannel,它是Netty 专门为改进针对ChannelHandler 的单元测试而提供的。

因为正在被测试的代码模块或者单元将在它正常的运行时环境之外被执行,所以你需要一个框架或者脚手架以便在其中运行它。

在我们的例子中,我们将使用JUnit 4 作为我们的测试框架,所以你需要对它的用法有一个基本的了解。

如果它对你来说比较陌生,不要害怕;虽然它功能强大,但却很简单,你可以在JUnit 的官方网站(www.junit.org)上找到你所需要的所有信息。

你可能会发现回顾前面关于ChannelHandler 的章节很有用,因为这将为我们的示例提供素材。

个人收获

  1. 单元测试是一种相通的思想

  2. netty 的设计比较棒,可以让开发者验证自己的代码是否正确。因为多线程的测试一直是一个难题。

拓展阅读

单元测试系列

参考资料

《Netty in Action》 P137