我遇到一个问题,当我将特定测试放入测试套件并通过logtalk传递它时,特定的测试返回false,但是当我使用相同的后端编译器(SWI)通过解释器运行它时,返回true (这是所希望的行为)。下面是logtalk测试结果的相关部分,一个测试在学生目录中的快照,以及当我通过SWI解释器通过相同测试时的输出。
测试结果:

Tests.lgt中的测试用例:

通过swipl运行的结果:

如能提供任何协助,将不胜感激。
谢谢。
发布于 2021-08-01 16:10:00
另外,“发现的重复测试标识符”错误必须修复,以获得准确的测试结果。测试标识符必须是唯一的记录在案。
你的问题中没有足够的信息来诊断这个问题。在测试定义中使用{}/1控件构造来包装测试目标意味着目标被称为原样。我的建议是,您可以在一个学生目录中看到问题,手动运行测试,然后在顶层调用测试目标。类似于:
$ cd student_id_xyz
$ swilgt
...
?- {tester}.
...
?- no_duplicates(..., ...).
...在不重新启动的情况下执行这个,这样我们就可以保证两个测试(从测试文件中输入并在顶层输入)都具有相同的上下文。如果你得到同样的结果,请告诉我们。
我为您的学生评分任务建议的解决方案假设学生Prolog文件是普通 Prolog文件(即没有模块定义)。如果某些学生提交的情况并非如此,请尝试使用Prolog后端特定谓词(例如,tester.lgt )使用的logtalk_load/1谓词(为可移植性选择的)更改logtalk_load/1驱动程序文件中的学生Prolog文件的加载。
https://stackoverflow.com/questions/68611987
复制相似问题