Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing gnuprolog中的单元测试_Unit Testing_Prolog_Gnu Prolog - Fatal编程技术网

Unit testing gnuprolog中的单元测试

Unit testing gnuprolog中的单元测试,unit-testing,prolog,gnu-prolog,Unit Testing,Prolog,Gnu Prolog,我正在尝试将我的SWI Prolog应用程序迁移到GNU Prolog中。不幸的是,我对单元测试有一个问题。在SWIPL中,我们可以简单地使用模块并编写如下测试用例: :- begin_tests(my_tests). test(my_predicate_test) :- my_predicate(Result), assertion(Result == [foo, bar]). test(second_test) :- foo(10, X), assertion(X == "hell

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

:- 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中实现单元测试呢?甚至一些附加库(如)也不适用于gprolog。

您可以使用。总结了其主要特点。大多数测试可以按原样运行,也可以轻松转换。以您的例子:

:- 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.
该工具支持多个,其中一些是
plunit
所共有的。例如

:- 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代码(假设您正在使用gnuprolog),Logtalk的Prolog标准提供了大量示例

您还可以导出多个行业标准(如TAP和xUnit)中的测试结果,并生成报告以便于浏览(参见示例)

有关测试的进一步建议,请参见这些