
このメモでは、JSコードの単体テストの経験、js-test-driverテストランタイム環境の使用経験、そのコードカバレッジ機能、ヘビでハリネズミをねじる、つまりjs-test-driverとレポートジェネレータからのコードカバレッジデータについて説明します。 PHP_CodeCoverageカバレッジについて。 コードカバレッジに関する
このようなレポートを取得する方法を教えて示します...
そのため、JSコードの単体テストを実装する必要がありました。
Js-test-driverは、実行環境およびテスト作成のフレームワークとして選択されました。 その理由は次のとおりです。
- 使用されているIDEチーム用のプラグインの形式があります -PhpStorm (残念ながら、現時点ではプラグインが現在のPhpStormプラットフォームで動作せず、対応するチケットが開始ステータスにあります)
- 複数のブラウザでテストを自動的に実行できる
- コマンドラインから動作し、CIに埋め込むだけ
- コードカバレッジについてレポートできる
IDEのプラグインが現在操作不能であるという事実にもかかわらず、コンソールからテクノロジーに「触れる」ことができます。 サーバーとランタイムはコンソールとは別に起動され、ユーザーのキックによって「手動モードで」テストを実行できます。
ビジネスで試してみましょう
テストするコード
var greeter = function(toSay){ this.whatToSay = toSay; } greeter.prototype.say = function(sayBye){ if(sayBye == true) return "Goodbye " + this.whatToSay; else return "Hello " + this.whatToSay; }
そしてテスト
var testCase = new TestCase("Say"); testCase.prototype.testCase1 = function(){ var i = new greeter('test'); assertEquals("Hello test", i.say(false)); };
ファイル構造
\jstd \plugins coverage.jar code.js test.js conf jstestdriver.jar
実行する構成(YAML形式のconfファイル)
load: - code.js - test.js server: http://localhost:4224
打ち上げ
まず、サーバーを起動します
H:\jstd>java -jar jstestdriver.jar
ブラウザーを起動し、localhost:4224にアクセスして、ブラウザーをマスターします。 テスト実行を開始します。
UPD:任意の数の任意のブラウザーのテストに接続できます。 別のOSの下からリモートマシンから接続することもできます。 ブラウザをテストに接続する==特定のサーバー(この場合はjs-test-driverサーバー)でページを開く
H:\jstd>java -jar JsTestDriver.jar --config conf --tests all .. Total 2 tests (Passed: 2; Fails: 0; Errors: 0) (1,00 ms) Chrome 6.0.472.63 Windows: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (1,00 ms) Safari 525.28.1 Windows: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (1,00 ms)
2つのテストのみを実行したことがわかります。 含む Chromeブラウザーでは1、成功しました。Safariブラウザーでは1でも成功しました。 すべてが素晴らしいです。
コードカバレッジはどうですか?
CodeCoverageは
、別個の
プラグイン によって接続され ます 。 カバレッジデータは、テスト実行の終了時に静的情報(ファイルがN%でカバーされる)として表示するか、
LCOVファイルにアップロードできます。 著者は、genhtmlツールを使用して視覚的なレポートを生成することを提案しています。 Win32に移植された結果のクイック検索は機能しませんでした; Cygwinまたはレポート作成用の別のマシンを上げる気はありません...
コードカバレッジを使用してテストを実行する
プラグインを接続します。 構成ファイル(conf)を編集します。
load: - code.js - test.js server: http://localhost:4224 plugin: - name: "coverage" jar: "plugins/coverage.jar" module: "com.google.jstestdriver.coverage.CoverageModule"
テストを実行する
H:\jstd>java -jar JsTestDriver.jar --config conf --tests all Safari: Runner reset. .Safari: Runner reset. Chrome: Runner reset. .Chrome: Runner reset. Total 2 tests (Passed: 2; Fails: 0; Errors: 0) (1,00 ms) Chrome 6.0.472.63 Windows: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (1,00 ms) Safari 525.28.1 Windows: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (0,00 ms) H:/jstd/code.js: 83.33333% covered H:/jstd/test.js: 100.0% covered
結果に加えて、コードカバレッジに関する情報が表示されていることがわかります。 そのような報告からは、ほとんど意味がありません。 テスト結果のファイルへの保存を始めましょう。
H:\jstd>java -jar JsTestDriver.jar --config conf --tests all --testOutput ./out Safari: Runner reset. .Safari: Runner reset. Chrome: Runner reset. .Chrome: Runner reset. Total 2 tests (Passed: 2; Fails: 0; Errors: 0) (1,00 ms) Chrome 6.0.472.63 Windows: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (1,00 ms) Safari 525.28.1 Windows: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (1,00 ms)
カバレッジ情報はまったく表示されなくなりましたが、LCOV形式のカバレッジを持つファイルが./outフォルダーに表示されました。
LCOV形式
js-test-driverによって生成されるlcovファイルの形式は非常に単純です。
SF:H:/jstd/code.js DA:1,2 DA:2,2 DA:5,2 DA:6,2 DA:7,0 DA:9,2 end_of_record SF:H:/jstd/test.js DA:1,2 DA:3,2 DA:4,2 DA:5,2 end_of_record
SFはデータを以下に示すファイルで、DAはカバレッジデータ(DA:文字列、実行回数)です。
美しいレポートを生成します:PHP_CodeCoverage
PHPUnit -PHPの単体テストを実装するためのフレームワークには、コードカバレッジレポートを生成する機能があります。 CodeCoverageモジュールは、切り離しが非常に簡単で、非常にきちんと実装されています。 この構造には、
PHP_CodeCoverage_Driverインターフェースが含まれます。これを実装するクラスは、プロジェクトの他のコンポーネント(レポートビルダーなど)のコードカバレッジに関するデータのソースとして機能します。
Xdebug。 彼はどのようにカバレッジデータを提供しますか?
ファイルについて...
<?php xdebug_start_code_coverage(); function a() { $x = 10; } $b = 30; var_dump(xdebug_get_code_coverage());
結果が得られます...
array( 'Z:\home\test\www\test.php' => array( 4 => 1 8 => 1 10 => 1 ) );
フォーマットが非常に似ていることがわかり
ます。独自のドライバを作成でき
ます
以下は、カバレッジレポートを生成するコードの簡単な例です。 カバレッジデータはcoverage.datファイルにあると想定されています。 レポートはCodeCoverageReportフォルダーにあります。
<?php include('PHP/CodeCoverage.php'); include('PHP/CodeCoverage/Driver/Lcov.php'); include('PHP/CodeCoverage/Report/HTML.php');
何が起こるかは
ここで見つけることができ
ます 。 レポートを見ると、複雑な例がテストで完全にカバーされておらず、1つのブランチが欠落しているため、テストで緊急にカバーする必要があることがわかります。