|
楼主 |
发表于 2024-4-24 15:36:47
|
显示全部楼层
4.单元测试
mud机器人,特别是北侠的mud机器人有特殊性,应对的时经常变化的场景,所以大部分情况瞎不需要单元测试。
但我个人还是建议,在有需要的地方,比如各种库/文字数字转化/地图路径计算时加入单元测试。
关于单元测试,本质就是将代码分为最小单元,根据涉及意图设计多个测试用例,通过程序自动进行测试,确定功能实现成却,以及更新和维护代码后功能依旧可用。
参考
单元测试的意义,实际中主要体现在几个方面
- 确保代码符合自己的意图(测试用例)
- 确保更新对代码没有影响
- 一个使用代码的约定(我的代码应该按我的测试的方式来使用)
其中个人觉得最有用的是第三点
lua的话,我目前选择的是luunit这个库
https://luaunit.readthedocs.io/en/latest/#
使用起来其实比较简单
参考这个测试
先引入luunit
- local lu = dofile('../../src/hclua/vendor/luaunit/luaunit.lua')
复制代码 然后建立Test或test开头的函数
- function TestList()
- local l = list.new()
- checkListPointers(l, {})
- local e = l:pushFront('a')
- checkListPointers(l, { e })
- l:moveToFront(e)
- checkListPointers(l, { e })
复制代码 里面是一个一个用例
在需要判断的地方加入诸如
- lu.assertEquals(n, N)
- lu.assertNotIsTrue(sum >= 0 and s ~= sum)
复制代码 这样的判断代码
然后lua结尾加上
- os.exit(lu.LuaUnit.run())
复制代码 的代码就行了。
使用时,就是lua -v 你的测试代码.lua
比如
- $ lua5.1 test.lua
- ..............
- Ran 14 tests in 0.010 seconds, 14 successes, 0 failures
- OK
复制代码 看是否有报错或者报失败就行。
|
|