建立函数库测试框架
方案:
函数定义文件格式
(defun foobar (para1 para2)
"函数说明"
"返回值"
"示例"
;; 函数 实现代码
)
(fun:test foobar '(
((x1 x2) . res1)) ;; 测试用例1
((y1 y2) . res2)) ;; 测试用例2
((z1 z2) . res3)) ;; 测试用例3
))
实现核心代码
;; 测试通过为 t ,失败为 nil
(defun fun:test (fun usecases)
"函数测试,fun:函数名,usecases:测试用例,测试用例为参数和返回值组成的点对表。"
"lst,对应测试用例的测试结果,t为通过,nil为失败"
"(fun:test point:mid '((((0 0)(2 2)) . (1 1))(((3 3)(5 5)) . (4 4))))"
(mapcar '(lambda (x)
(list:equal (apply (function fun) (car x)) (cdr x) 1e-6) ) usecases))
上述代码如参数不致会导致错误退出。可改用vl catch 进行错误处理,保证测试用例全部执行。
评论