首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >plunit测试显然在幕后创建了一个模块..。但是这个模块能被卸载吗?

plunit测试显然在幕后创建了一个模块..。但是这个模块能被卸载吗?
EN

Stack Overflow用户
提问于 2020-03-10 21:23:53
回答 1查看 62关注 0票数 1

我想使用在SWI中实现的折叠式来运行一些经典风格的单元测试!

所以我想直接在终端输入它们:

代码语言:javascript
复制
[user].

然后复制粘贴:

代码语言:javascript
复制
:- begin_tests(exercise).

test(foo) :- bar.

:- end_tests(exercise).

这工作得很好。

..。但是如果我再次通过[user].加载测试--有一种类似西方世界的体验:

代码语言:javascript
复制
?- [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)

该实现似乎为测试plunit_X创建了一个模块X。这事儿可以理解。

但是有办法卸载测试模块exercise吗?

一定有..。

请注意,您可以用档案/1卸载文件,但不能卸载模块?

更新:

不用使用[user].[file]输入代码,而是使其工作。嗯。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-10 21:56:24

因为我不知道如何重现你的问题,你必须自己测试这个问题。

使用模块/1

由于它不是从模块模块导出的,所以我猜modules:destroy_module(X)应该能工作。

因为它不是导出的谓词,也不是文档化的https://en.wikipedia.org/wiki/Caveat_emptor

编辑

不用使用[user].[file]输入代码,而是使其工作。嗯。

user是一个预定义的模块,文件不是AFAIK。

代码语言:javascript
复制
?- 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.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60626143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档