plunit test 显然在幕后创建了一个模块......但是可以卸载该模块吗?
plunit test apparently creates a module behind the scenes ... but can that module be unloaded?
我想使用 plunit 在 SWI Prolog 中实现 运行 一些经典风格的单元测试!
所以我想直接在终端输入:
[user].
然后复制粘贴:
:- begin_tests(exercise).
test(foo) :- bar.
:- end_tests(exercise).
这非常有效。
...但是如果我再次通过 [user].
加载测试——会有类似西部世界的体验:
?- [user].
|: :- begin_tests(exercise).
ERROR: user://2:17:
ERROR: module/2: No permission to redefine module `plunit_exercise' (Already loaded from user://1)
Warning: user://2:17:
Warning: Goal (directive) failed: user:begin_tests(exercise)
该实现似乎为测试 X
创建了一个模块 plunit_X
。有道理。
但是有没有办法卸载测试模块exercise
?
一定有...
请注意,您可以卸载带有 unload_file/1 的 文件 而不是模块?
更新:
而不是使用 [user].
输入代码并使用 [file]
使其工作。嗯。
由于我不知道如何重现您的问题,您必须自己进行测试。
因为它不是从模块 modules 导出的,所以我猜 modules:destroy_module(X)
应该可以工作。
因为它不是导出的谓词,也没有记录 Caveat emptor
编辑
Instead of entering the code using [user].
and using a [file]
makes it work. Hmm.
user
是预定义模块,文件不是 AFAIK。
?- current_module(X).
X = prolog ;
X = sysetm ;
X = user ;
X = predicate_options ;
X = base32 ;
X = read_util ;
X = win_menu ;
X = shlib ;
X = qsave ;
X = prolog_clause ;
X = prolog_history ;
X = pce_swi_hooks ;
X = prolog_stack ;
X = system ;
X = ansi_term ;
X = link_xpce ;
false.
我想使用 plunit 在 SWI Prolog 中实现 运行 一些经典风格的单元测试!
所以我想直接在终端输入:
[user].
然后复制粘贴:
:- begin_tests(exercise).
test(foo) :- bar.
:- end_tests(exercise).
这非常有效。
...但是如果我再次通过 [user].
加载测试——会有类似西部世界的体验:
?- [user].
|: :- begin_tests(exercise).
ERROR: user://2:17:
ERROR: module/2: No permission to redefine module `plunit_exercise' (Already loaded from user://1)
Warning: user://2:17:
Warning: Goal (directive) failed: user:begin_tests(exercise)
该实现似乎为测试 X
创建了一个模块 plunit_X
。有道理。
但是有没有办法卸载测试模块exercise
?
一定有...
请注意,您可以卸载带有 unload_file/1 的 文件 而不是模块?
更新:
而不是使用 [user].
输入代码并使用 [file]
使其工作。嗯。
由于我不知道如何重现您的问题,您必须自己进行测试。
因为它不是从模块 modules 导出的,所以我猜 modules:destroy_module(X)
应该可以工作。
因为它不是导出的谓词,也没有记录 Caveat emptor
编辑
Instead of entering the code using
[user].
and using a[file]
makes it work. Hmm.
user
是预定义模块,文件不是 AFAIK。
?- current_module(X).
X = prolog ;
X = sysetm ;
X = user ;
X = predicate_options ;
X = base32 ;
X = read_util ;
X = win_menu ;
X = shlib ;
X = qsave ;
X = prolog_clause ;
X = prolog_history ;
X = pce_swi_hooks ;
X = prolog_stack ;
X = system ;
X = ansi_term ;
X = link_xpce ;
false.