コードカバレッジを含める予定はありますか? https://github.com/gotwarlost/istanbul/issues/132を見つけましたが、これを行うための良い方法はないようです。 (きゅうりに特に興味があります)
まず第一に、コードカバレッジを統合テストの一部にするべきではないと思います。 最初に単体テストを作成し、そこに適切なコードカバレッジがあることを確認する必要があります。 Selenium / WebdriverIOは、スタックのエンドツーエンドの統合をカバーする必要があります。
ただし、WebdriverIOを使用して、その問題のスレッドで説明されているのと同じことを行うことができます。 selenium-webdriverの構文を使用する代わりに、WebdriverIOsコマンドを使用するだけです。
client.execute("return window.__coverage__;").then(function (obj) {
var str = JSON.stringify(obj);
var options = {
port: 8888,
host: "localhost",
path: "/coverage/client",
method: "POST",
headers: {
"Content-Type": "application/json",
}
};
var req = http.request(options, function (res) {
console.log("\nFinished sending coverage data.");
done();
});
req.write(str);
req.end();
});
ただし、繰り返しになりますが、統合テストにコードカバレッジを含めるべきではありません。
@ christian-bromann
カバレッジレポートを機能テストの一部にすべきではないとあなたが信じているのはなぜだろうか。
WebdriverIOを使用すると、ビジネスケースをエンドツーエンドでテストする必要があるe2eテストを作成するためです(名前が示すとおり)。 そのため、コードをテストするのではなく、特定のユーザーフローをテストします。 アプリのすべてのビジネス面をカバーしようとします。 フロントエンドで実行されたコードの量を技術的にキャプチャできたとしても、ビジネスケースにとってはまったく面白くないため、意味がありません。
単体テストでは、実際にテストコードを実行するため、テストをどの程度うまく行っているかを確認するには、コードカバレッジが重要です。 この場合、値があります。
機能テストでカバレッジレポートを自由にキャプチャできますが、単体テストや統合テストの代わりに、より多くのe2eテストを作成することで、このレポートの見栄えを良くしようとすることになります。 それはあなたが何をテストしようとしているのか、そしてあなたがそれのためにどのツールを使っているのかということです。
最も参考になるコメント
WebdriverIOを使用すると、ビジネスケースをエンドツーエンドでテストする必要があるe2eテストを作成するためです(名前が示すとおり)。 そのため、コードをテストするのではなく、特定のユーザーフローをテストします。 アプリのすべてのビジネス面をカバーしようとします。 フロントエンドで実行されたコードの量を技術的にキャプチャできたとしても、ビジネスケースにとってはまったく面白くないため、意味がありません。
単体テストでは、実際にテストコードを実行するため、テストをどの程度うまく行っているかを確認するには、コードカバレッジが重要です。 この場合、値があります。
機能テストでカバレッジレポートを自由にキャプチャできますが、単体テストや統合テストの代わりに、より多くのe2eテストを作成することで、このレポートの見栄えを良くしようとすることになります。 それはあなたが何をテストしようとしているのか、そしてあなたがそれのためにどのツールを使っているのかということです。