明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 372|回复: 1

[讨论] lisp 开发如何进行单元测试

  [复制链接]
发表于 2024-7-22 12:02:07 | 显示全部楼层 |阅读模式
* 实现方案
函数定义及测试函数文件内容格式

  1. (defun foobar (para1 para2)
  2.    "函数说明"
  3.    "返回值"
  4.    "示例"
  5.    ;; 函数 实现代码
  6. )

  7. (fun:test foobar
  8. '(
  9.   ((x1 x2) . res1)) ;; 测试用例1
  10.   ((y1 y2) . res2)) ;; 测试用例2
  11.   ((z1 z2) . res3)) ;; 测试用例3
  12. ))



*  实现核心代码
  1. ;; 测试通过为 t ,失败为 nil
  2. (defun fun:test (fun usecases)
  3.   "函数测试,fun:函数名,usecases:测试用例,测试用例为参数和返回值组成的点对表。"
  4.   "lst,对应测试用例的测试结果,t为通过,nil为失败"
  5.   "(fun:test point:mid '((((0 0)(2 2)) . (1 1))(((3 3)(5 5)) . (4 4))))"
  6.   (mapcar
  7.    '(lambda (x)
  8.      (list:equal (apply (function fun) (car x))
  9.       (cdr x)
  10.       1e-6)
  11.      )
  12.    usecases))



上述代码如参数不致会导致错误退出。可改用vl catch 进行错误处理,保证测试用例全部执行。

* 使用说明
用法:(fun:test 函数名 用例列表)
示例:
  1. (fun:test
  2.    point:mid
  3.    '((((0 0)(2 2)) . (1 1))
  4.      (((3 3)(5 5)) . (4 4))))
  5. ;; 上例为测试求两点的中点:

  6. (point:mid '(0 0) '(2 2)) ;执行结果 (1 1)
  7. (point:mid '(3 3) '(5 5)) ;执行结果 (4 4)


* 自动测试
创建 test 文件夹,文件夹下以函数名为文件名,文件内容为  *测试用例*
用这样的文件结构为源数据,生成测试代码并执行。

如上例:在test文件夹下创建  point:mid 文件。
其内容:(一行为一个测试用例)

  1. (((0 0)(2 2)) . (1 1))
  2. (((3 3)(5 5)) . (4 4))


讨论可至: https://gitee.com/atlisp/atlisp-lib/issues/I593AT

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-7-22 14:41:07 | 显示全部楼层
小白看不懂,好高深的样子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 11:43 , Processed in 0.163905 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表