2017-10-01 5 views
2

私は、python、node.js、Cを含む多言語プロジェクトに取り組んでいるPerl開発者です。ありがたいことに、これらの言語にはすべてTAPプロデューサライブラリがあります。たとえば、mochaコマンドを使用してNode.jsスクリプトを実行し、TAP出力を取得できます。他の言語のTAPプロデューサでPerlの「証明」を使うにはどうすればいいですか?

ただし、これをproveツールとどのように統合すればよいですか? perlでは、私は一般にt/にテストを入れ、prove -vlc t/はすべての.tファイルをperlスクリプトとして実行します。私が考えることができるのは、perl .tファイル内のmochaコマンドexecです。

+0

'prove'はPerlに偏っていますが、根本的に言語に依存しません。 '.t'ファイルは、必ずしもPerlスクリプトではなくTAPを出力する任意の実行可能ファイルです。私のお気に入りのテクニックの1つは、YAMLドキュメントを.tファイルとして使用してテストケースを作成し、テストケースを実行するために '#!/ usr/bin/env/env/run-yaml-test'のようなシバンを使用することです。 – amon

答えて

4

多言語プロジェクトで一般的な単体テストのレポート形式としてTAPを使用すると考えられる最も直接的な方法は、ディレクトリにTAP生成ユニットテストドライバを呼び出すスクリプトを書くことです。

モカは、プラグインと呼ばれるモカタップレポーターを報告し、コマンドラインからそれを呼び出すTAPを持っているだけで

mocha --reporter mocha-tap-reporter <directory> 

ここでは単純なプロジェクトで物事を設定する方法の例です

. 
├── node_modules 
    (contents of node_modules omitted) 
├── package-lock.json 
├── package.json 
├── t 
│   └── mocha.t 
└── test 
    └── multiply.js 
この場合

multiply.jsassertヘルパーを使用し、ただ一つの試験があります。

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を実行した場合、その後、あなたはこれを参照してくださいよ:

mocha-tap-reporterプラグインは3年程度とルックスに更新されていない言われていること
% 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 

少し維持されません。私はこれがPerlコミュニティ以外のTAPライブラリの一般的な状況だと考えていますが(OCamlプロジェクトではこれをしばらく使っています)。

関連する問題