【问题标题】:Logtalk test returning failed when it passes under SWI interpreterLogtalk 测试在 SWI 解释器下通过时返回失败
【发布时间】:2021-08-01 15:44:13
【问题描述】:

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

测试结果:

tests.lgt 中的测试用例:

通过swipl运行的结果:

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: prolog swi-prolog logtalk


    【解决方案1】:

    附带说明,“发现重复的测试标识符”错误必须修复以获得准确的测试结果。测试标识符必须是唯一的 documented

    您的问题中没有足够的信息来诊断问题。在测试定义中使用{}/1 控制结构来包装测试目标意味着该目标是按原样调用的。我的建议是让你 cd 到你看到问题的学生目录,手动运行测试,然后在顶层调用测试目标。比如:

    $ cd student_id_xyz
    $ swilgt
    ...
    ?- {tester}.
    ...
    ?- no_duplicates(..., ...).
    ...
    

    执行此操作无需重新启动,以便我们保证两个测试(来自测试文件并在顶层键入)在相同的确切上下文中发生。如果您得到相同的结果,请告诉我们。

    我为您的学生评分任务建议的解决方案假定学生 Prolog 文件是 plain Prolog 文件(即没有模块定义)。如果某些学生提交的情况并非如此,请尝试通过 Prolog 后端特定谓词(例如consult/1)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多