我有两个使用 gen_tcp 套接字进行通信的 gen_servers。
第一个 gen_server 导出一个函数,调用该函数时会构建(调用另一个函数)一个 RFC 791 数据包,连接到另一个 gen_server 正在侦听传入连接的套接字,并将数据包发送给它。
我在 shell 中测试了它并且它正在工作,但是测试这样的代码的正确工具/方法是什么?我应该使用 eunit 还是有其他更合适的工具?
此外,我想知道我应该实际测试什么?只有发送部分还是也用于数据包构造?
您绝对可以为每个 gen_servers 编写一些 EUnit 测试:
http://www.erlang.org/doc/apps/eunit/chapter.html
http://learnyousomeerlang.com/eunit#the-need-for-tests
您还可以查看 Common Test 来测试交互:
http://www.erlang.org/doc/apps/common_test/basics_chapter.html
http://learnyousomeerlang.com/common-test-for-uncommon-tests#what-is-common-test
由于您的实现很大程度上依赖于传递的数据,我会看看 QuickCheck Mini 或 PropEr 提供的生成器:
http://proper.softlab.ntua.gr/
此处提供了有关如何使用 QuickCheck mini 之类的工具改进单元测试的简要说明:
http://www.erlang-solutions.com/upload/docs/85/EUG-London-Apr2011.pdf
首先,我将专注于测试您导出的功能(模块接口)。您仍然可以稍后添加更多测试。