首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU Prolog中的单元测试

GNU Prolog中的单元测试
EN

Stack Overflow用户
提问于 2021-01-22 19:41:13
回答 1查看 107关注 0票数 4

我正在尝试将SWI Prolog应用程序迁移到GNU Prolog中。不幸的是,我在单元测试方面遇到了问题。在SWIPL中,我们可以简单地使用plunit模块并编写测试用例,如下所示:

代码语言:javascript
复制
:- begin_tests(my_tests).
test(my_predicate_test) :- my_predicate(Result), assertion(Result == [foo, bar]).
test(second_test) :- foo(10, X), assertion(X == "hello world").
:- end_tests(my_tests).

但是如何在GNU Prolog中实现单元测试呢?甚至像crisp这样的附加库也不能用于gprolog。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 20:04:40

您可以使用lgtunit。它的主要特点是总结here。您的大多数测试都可以按原样运行,或者很容易转换。使用您的示例:

代码语言:javascript
复制
:- object(tests, extends(lgtunit)).

    :- uses(lgtunit, [assertion/1]).
    :- uses(user, [my_predicate/1, foo/2]).

    test(my_predicate_test) :-
        my_predicate(Result),
        assertion(Result == [foo, bar]).

    test(second_test) :-
        foo(10, X),
        assertion(X == "hello world").

:- end_object.

该工具支持多个test dialects,其中一些是plunit通用的。例如。

代码语言:javascript
复制
:- object(tests, extends(lgtunit)).

    :- uses(user, [my_predicate/1, foo/2]).

    test(my_predicate_test, true(Result == [foo, bar]) :-
        my_predicate(Result).

    test(second_test, true(X == "hello world")) :-
        foo(10, X).

:- end_object.

假设您正在测试普通的Prolog代码(假设您正在使用GNU Prolog),Logtalk的Prolog标准compliance suite提供了大量的示例。

您还可以导出多种行业标准的测试结果,如TAP和xUnit,并生成便于浏览的报告(参见https://infradig.github.io/trealla/)。

有关测试的进一步建议,请参阅这些blog posts

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65844487

复制
相关文章

相似问题

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