如何使用Perl';s';证明';与其他语言的TAP制作人合作?

如何使用Perl';s';证明';与其他语言的TAP制作人合作?,perl,unit-testing,mocha.js,tap,Perl,Unit Testing,Mocha.js,Tap,我是一名从事多语言项目的Perl开发人员,包括python、node.js和C。谢天谢地,所有这些语言都有TAP生成器库。例如,我可以使用mocha命令运行Node.js脚本并获得TAP输出 但是,如何将其与prove工具集成?对于perl,我通常将测试放在t/中,prove-vlc t/将以perl脚本的形式运行其中的所有.t文件。我唯一能想到的就是在perl.t文件中执行mocha命令 我能想到的在多语言项目中使用TAP作为通用单元测试报告格式的最直接方法是在t/目录中编写一些脚本,调用TA

我是一名从事多语言项目的Perl开发人员,包括python、node.js和C。谢天谢地,所有这些语言都有TAP生成器库。例如,我可以使用
mocha
命令运行Node.js脚本并获得TAP输出


但是,如何将其与
prove
工具集成?对于perl,我通常将测试放在
t/
中,
prove-vlc t/
将以perl脚本的形式运行其中的所有.t文件。我唯一能想到的就是在perl.t文件中执行mocha命令

我能想到的在多语言项目中使用TAP作为通用单元测试报告格式的最直接方法是在
t/
目录中编写一些脚本,调用TAP生成单元测试驱动程序

Mocha有一个名为Mocha TAP reporter的TAP报告插件,从命令行调用它只是简单的

mocha --reporter mocha-tap-reporter <directory>
在本例中,
multiply.js
使用
assert
帮助程序,只有一个测试:

const assert = require('assert');

describe('multiply', function () {
    it('1 * 0 = 0', function () {
        assert.equal(1 * 0, 0);
    });
});
mocha.t
只是围绕着
mocha--reporter mocha-tap reporter test的外壳包装

#!/bin/bash
# change directory to folder containing source file
cd "$(dirname "${BASH_SOURCE[0]}")"
# go to project root
cd ..
# invoke mocha test runner with tap reporter
./node_modules/.bin/mocha \
    --reporter mocha-tap-reporter \
    test
然后,如果从项目根目录运行
prove
,您将看到:

% prove
t/mocha.t .. ok
All tests successful.
Files=1, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.23 cusr  0.08 csys =  0.34 CPU)
Result: PASS

这就是说,
mochatap reporter
插件已经三年左右没有更新了,看起来有点没有维护。不过,我认为这是Perl社区之外的TAP库的一般情况(不久前在OCaml项目中使用过一个)。

prove
偏向Perl,但从根本上说是语言不可知论的。
.t
文件可以是输出TAP的任何可执行文件,而不一定是Perl脚本。我最喜欢的技术之一是使用YAML文档作为.t文件编写测试用例,然后使用类似于
#的shebang/usr/bin/env./runyaml test
来执行测试用例。不过,我不知道TAP格式化程序需要很多维护。我可能很天真,但它不是一个非常复杂的格式/需要大量不断更新才能符合的格式。
% prove
t/mocha.t .. ok
All tests successful.
Files=1, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.23 cusr  0.08 csys =  0.34 CPU)
Result: PASS