Unit testing gnuprolog中的单元测试
我正在尝试将我的SWI Prolog应用程序迁移到GNU Prolog中。不幸的是,我对单元测试有一个问题。在SWIPL中,我们可以简单地使用模块并编写如下测试用例: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
:- 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)中的测试结果,并生成报告以便于浏览(参见示例)
有关测试的进一步建议,请参见这些