如何在不导出所有符号的情况下运行测试

Pue*_*Pop 3 symbols common-lisp package

我(至少)有一个我的主程序所在的包.我有另一个用于运行测试的包.我:在测试包的defpackage形式中使用主程序包,但只导入导出的符号.所以我无法测试所有函数,只测试我明确导出的函数(公共API).我该如何解决这个问题?

jbm*_*jbm 7

您始终可以使用双冒号限定符来引用内部(未导出)符号:

(package-name::function-name)
Run Code Online (Sandbox Code Playgroud)

您还可以将符号导入测试包(无论是否已从主包导出)import.例如:

(import 'package-name::function-name)
(fboundp 'function-name)  ;; => t
Run Code Online (Sandbox Code Playgroud)

这是 CLHS条目import.

另外,如果您还没有阅读它,我推荐Practical Common Lisp中的Programming in the Great:Packages and Symbols.它并没有直接解决你的问题,但我提到它是因为我发现它对一般的包和符号进行重新分类非常有帮助.