Erlang 单元测试


今天学习了下Erlang单元测试,发现非常有用,现在做个总结: 

我们先看一个例子(吐槽下Iteye的erlang代码高亮): 
 

这个module负责计算1到N的和,现在我们如何确认这个module功能的正确性呢? 
方法1:你可以再shell终端下,不断输入测试参数,然后验证程序输出结果,这种方法比较简单,而且可能也是每个人的首选方式,但是当我们日后不断对module进行修改,为了能够保证功能的正确性,我们又必须把以前的测试数据再输入一遍,所以这种方式不可持续发展; 
方法2:编写单元测试,“一劳永逸”(下次改完module代码,我们只要跑下单元测试即可) 

单元测试代码: 
 

需要注意的几点: 
1.单元测试的module名 = 需要测试的module名 +  "_tests"后缀(或者_test_后缀),譬如这里我需要测试diaocow.erl,那么我的单元测试代码就是diaocow_tests.erl; 
2.测试方法名需要以"_test"为后缀; 
3.单元测试需要引入头文件:-include_lib("eunit/include/eunit.hrl") 

现在我们来运行单元测试(需要先编译) 
 

其中: 
1.erlc 是编译命令,erlc *.erl表示编译当前目录下所有erlang源文件; 
2.eunit:test(Module) 执行某个module的单元测试 

到目前似乎一切都OK了,但是你有没有发现代码目录实在是太乱了,源文件,单元测试文件,字节码文件都放在一个目录下,现在我们就按照业界标准来把它们分下类: 

src存放程序源代码文件
ebin存放编译后的字节码文件
test存放单元测试源代码文件

如下图 
 

现在我们执行编译: 


-o 参数用来指定编译后的字节码存放目录(这里是ebin) 

现在我们在重新运行下单元测试: 
 

-pa参数用来指定执行文件(.beam)目录 

为了更方便的创建/编译erlang工程项目,我自己写了两个简单的脚本: 
1.erlang工程创建脚本 
 

2.erlang工程编译脚本 


为了能够更方便的使用这两个脚本,我们在.bashrc文件中配置alias(添加快捷键) 
 

我们看下脚本执行效果: 
1.创建erlang项目 
 

2.编译erlang项目(若编译正常,则自动进入erl shell) 


其实上面脚本所提供的功能,rebar都提供了,而且更加强大完善(搜索 erlang rebar) 

关于erlang的单元测试,我就说到这里,更详细的官方文档,请看这里: http://www.erlang.org/doc/apps/eunit/chapter.html#id61195 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值