lua单元测试
发布于 2021年 07月 02日 09:55
单元测试是软件开发中要进行的最初级的城市活动,是程序员自己的任务,而不是测试的任务。在单元测试中软件的独立单元将与程序的其他部分分隔来进行测试。
对程序员来说如果养成了对自己写的代码进行单元测试的好习惯,不但可以写出高质量的代码,而且还能提高自己的编程水平。
以下是lua中实现单元测试的例子:
1.测试框架
1.1 WriteCaseName(caseName); --当前测试的用例名
1.2 WriteCaseStep(caseStep); --当前测试步骤名
1.3 ret=AssertResult(expectResult,realResult) --自动比较(选用)
1.4 WriteReport(ret,realResult) --将测试结果写入报告文件
1.5 GetStatistic() -- 获取测试执行情况统计
1.6 InitTestFrame() --初始化测试框架,只能执行一次,否则会影响测试结果统计
1.7 SetCurrentModule(moduleName) --当前测试模块名字
2.代码实现
--当前测试用例名字
function WriteCaseName(caseName)
local h=io.open("f:luaunitCase.txt","a");
local str="
【"..caseName.."】".."
";
h:write(str);
h:close();
end
--当前测试步骤名
function WriteCaseStep(caseStep)
local h=io.open("f:luaunitCase.txt","a");
local str=" |--"..caseStep.."
";
h:write(str);
h:close();
end
--自动化比较
function AssertResult(expectResult,realResult)
if expectResult==realResult then
return "OK";
else
return "Error";
end
end
--测试日志
function WriteMsg(msg)
local h=io.open("f:luaunitCase.txt","a");
local str=msg.."
";
h:write(str);
h:close();
end
--测试报告
function WriteReport(assertResult,realResult)
local h=io.open("f:luaunitCase.txt","a");
local str=" "..assertResult.." (RealResult:"..realResult..")
";
h:write(str);
h:close();
end
3.使用方法
function TestCaseAdd()
local c=nil;
for i=1,3 do
local a=1;
local b=1+i;
WriteCaseName("TestCaseAdd");
WriteCaseStep("setp:"..i);
c=Add(a,b); --被测函数
ret=AssertResult(a+b,c);
if ret=="Error" then
WriteMsg("Error:"..i);
break; --当有错误的时候直接跳出,并给出第几次出的问题
end
WriteReport(ret,c);
end
end
--被测函数
function Add(a,b)
return a+b;
end
--执行测试用例
WriteMsg("test Add begin...");
TestCaseAdd();
WriteMsg("test Add end!
");
4.测试报告
注意:没有测试执行统计,有待完善。