use*_*135 2 perl unit-testing tap mocha.js
我是一个使用多语言项目的Perl开发人员,包括python,node.js和C.值得庆幸的是,所有这些语言都有TAP生成器库.例如,我可以使用该mocha命令运行Node.js脚本并获取TAP输出.
但是,如何将其与prove工具集成?对于perl,我通常会将测试放入其中t/并将prove -vlc t/作为perl脚本运行所有.t文件.我唯一能想到的是execperl .t文件中的mocha命令.
我可以想到在多语言项目中使用TAP作为通用单元测试报告格式的最直接的方法是在您的t/目录中编写一些脚本来调用生成TAP的单元测试驱动程序.
Mocha有一个名为mocha-tap-reporter的TAP报告插件,只是从命令行调用它
mocha --reporter mocha-tap-reporter <directory>
Run Code Online (Sandbox Code Playgroud)
这是一个如何在一个简单的项目中进行设置的示例
.
??? node_modules
(contents of node_modules omitted)
??? package-lock.json
??? package.json
??? t
? ??? mocha.t
??? test
??? multiply.js
Run Code Online (Sandbox Code Playgroud)
在这种情况下,multiply.js使用assert帮助器,只有一个测试:
const assert = require('assert');
describe('multiply', function () {
it('1 * 0 = 0', function () {
assert.equal(1 * 0, 0);
});
});
Run Code Online (Sandbox Code Playgroud)
mocha.t只是一个shell包装器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
Run Code Online (Sandbox Code Playgroud)
然后如果你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
Run Code Online (Sandbox Code Playgroud)
话虽这么说,该mocha-tap-reporter插件在三年左右的时间内没有更新,看起来有点不受维护.我认为这是Perl社区之外的TAP库的一般情况(尽管在一段时间内在OCaml项目中使用了一个).