我在我的Prolog单元测试(SWI-Prolog 7.2)中使用plunit
软件包。run_tests/0
在控制台上打印结果,但是我想以大多数CI服务器可以理解的xUnit XML格式导出plunit测试结果。有什么办法吗?
最佳答案
我假设SWI-Prolog plunit
工具使用消息打印机制来生成其输出。如果为true,则应该能够使用message_hook/3
谓词拦截那些消息,从而以xUnit XML格式(或任何其他格式)导出单元测试结果:
http://www.swi-prolog.org/pldoc/doc_for?object=message_hook/3
碰巧的是,我正在为Logtalk的单元测试工具lgtunit
提供类似的支持(用于导出测试结果)。它应该使您了解如何为plunit
进行操作。我今天提交了一个初步版本:
https://github.com/LogtalkDotOrg/logtalk3/blob/master/tools/lgtunit/NOTES.md
https://github.com/LogtalkDotOrg/logtalk3/blob/master/tools/lgtunit/xunit_xml_report.lgt
就我而言,此支持的目标是与CI服务器Concourse集成。不幸的是,关于xUnit XML格式的信息似乎缺乏明确的信息,其来源引用了不同版本的e.g.。哪些属性是必需的或可选的。我确实找到了这种格式的XSD,我不知道它的准确性,或者只是另一个变化而已:
https://gist.github.com/erikd/4192748