1. ホーム
  2. javascript

[解決済み] TDDのためのJavaScriptユニットテストツール

2022-03-14 16:19:59

質問

多くのJavaScriptユニットテストやテストツールを調べ、検討しましたが、TDDに完全に準拠したまま適切なオプションを見つけることができませんでした。そこで、完全にTDDに準拠したJavaScriptのユニットテストツールはあるのでしょうか?

どのように解決する?

カルマ または 分度器

KarmaはNode.jsで作られたJavaScriptのテストランナーで、ユニットテストのために作られたものです。

Protractorはエンドツーエンドのテスト用で、Selenium Web Driverを使用してテストを駆動します。

どちらもAngularチームによって作られたものです。どちらも、好きなアサーションライブラリを使うことができます。

スクリーンキャスト Karma はじめに

関連 :

プロ :

  • node.jsを使用しているので、Win/OS X/Linuxと互換性があります。
  • ブラウザからのテスト実行、またはPhantomJSによるヘッドレスでのテスト実行
  • 複数のクライアントで同時に実行
  • ブラウザの起動、キャプチャ、自動シャットダウンをオプションで設定可能
  • サーバーとクライアントを開発用コンピューターで実行するか、別々に実行するかを選択可能
  • コマンドラインからのテスト実行(ant/mavenに統合可能)
  • xUnitまたはBDDスタイルでテストを記述する
  • 複数のJavaScriptテストフレームワークをサポート
  • 保存時にテストを自動実行
  • クロスドメインでのリクエストのプロキシ
  • カスタマイズが可能です。
    • 他のテストフレームワークを包むために拡張する(Jasmine、Mocha、QUnit組み込み)。
    • 独自のアサーション/反論
    • 報告者
    • ブラウザーランチャー
  • WebStorm用プラグイン
  • Netbeans IDEでサポートされている

短所 :

mocha.js

私はmocha.jsの特徴や長所、短所についてコメントする資格は全くありません。 しかし、私がJSコミュニティで信頼している人物から勧められただけなのです。

ウェブサイトから報告されている機能一覧。

  • ブラウザサポート
  • プロミスを含むシンプルな非同期サポート
  • テストカバレッジレポート
  • 文字列の差分サポート
  • javascript # テスト実行用API
  • CIサポートなどのための適切な終了ステータス
  • 非Tysの自動検出とカラーリングの無効化
  • 捕捉されない例外を正しいテストケースにマッピングする
  • 非同期テストのタイムアウトをサポート
  • テスト固有のタイムアウト
  • growl通知対応
  • テスト時間のレポート
  • 遅いテストをハイライトする
  • ファイルウォッチャー対応
  • グローバル変数リーク検出
  • 正規表現にマッチするテストを任意に実行します。
  • アクティブなループでハングアップしないように自動終了する。
  • スイートやテストケースを簡単にメタ生成することができます。
  • mocha.optsファイルのサポート
  • クリック可能なスイートタイトルによるテスト実行のフィルタリング
  • ノードデバッガサポート
  • done() の複数回呼び出しを検出します。
  • 好きなアサーションライブラリを使用できる
  • 9つ以上のレポーターがバンドルされた拡張性の高いレポート機能
  • 拡張可能なテスト DSL またはインターフェイス。
  • フック前、フック後、フック前、フック後
  • 任意のトランスパイラをサポート(coffee-script など)
  • TextMateバンドル

ヨルポ

これはもう存在しませんので、以下にリダイレクトされます。 sequential.js その代わり

Yolpoはjavascriptの実行を可視化するためのツールです。JavascriptのAPI開発者は、自分たちのAPIを見せたり伝えたりするために、ユースケースを書くことが推奨されている。このようなユースケースはリグレッションテストの基礎となる。

AVA

ES2015 をビルトインでサポートする未来型テストランナー。JavaScriptはシングルスレッドですが、Node.jsのIOは非同期であるため、並列で発生することがあります。AVAはこれを利用し、テストを同時に実行します。これは特にIOの重いテストに有益です。さらに、テストファイルは別々のプロセスとして並列に実行されるため、パフォーマンスがさらに向上し、各テストファイルごとに分離された環境を提供します。

  • ミニマムで高速
  • シンプルなテスト構文
  • テストの同時実行
  • アトミックテストの記述の強制
  • 暗黙のグローバルがない
  • テストファイルごとに分離された環境
  • ES2015 でテストを記述する
  • Promiseのサポート
  • ジェネレータ関数のサポート
  • 非同期関数サポート
  • Observableのサポート
  • アサートの強化
  • オプションのTAP 出力
  • クリーンなスタックトレース

バスター.js

Node.jsで作られたJavaScriptのテストランナーです。非常にモジュール化されており、柔軟性があります。独自のアサーションライブラリが付属していますが、お好みで追加することができます。この アサーションライブラリ はデカップリングされているので、他のテストランナーで使用することもできます。その代わりに assert(!...) または expect(...).not... を使用します。 refute(...) というのは、いい工夫だと思います。

<ブロッククオート

ブラウザJavaScriptのテストツールキットです。ブラウザの自動化(JsTestDriverを考えてください)、QUnitスタイルの静的HTMLページのテスト、ヘッドレスブラウザ(PhantomJS、jsdom、...)でのテスト、その他を備えたブラウザテストを行います。ご覧ください。 概要 !

Node.jsのテストツールキットです。同じテストケースライブラリ、アサーションライブラリなどが手に入ります。ブラウザとNode.jsのハイブリッドなコードにも最適です。Buster.JSでテストケースを書き、Node.jsと実際のブラウザの両方で実行します。

スクリーンキャスト Buster.js 入門編 (2:45)

プロス :

  • node.jsを使用しているので、Win/OS X/Linuxと互換性があります。
  • ブラウザからのテスト実行、またはPhantomJSによるヘッドレスでのテスト実行(近日公開予定)
  • 複数のクライアントで同時に実行
  • NodeJSのテストをサポート
  • 開発用PCでサーバ/クライアントを起動する必要がない(IEが不要)
  • コマンドラインからのテスト実行 (ant/mavenに統合可能)
  • xUnitまたはBDDスタイルでテストを記述する
  • 複数のJavaScriptテストフレームワークをサポート
  • テストをコメントアウトする代わりに、テストを延期することができます。
  • SinonJS内蔵
  • 保存時にテストを自動実行する
  • クロスドメインでのリクエストのプロキシ
  • カスタマイズが可能です。
    • 他のテストフレームワークを包むために拡張する(JsTestDriverを内蔵しています)
    • 独自のアサーション/反論
    • レポーター(xUnit XML、従来のドット、スペック、タップ、TeamCityなど組み込み可)
    • ブラウザテストを実行するために使用するHTMLのカスタマイズ/置換
  • TextMateとEmacsの統合

短所 :

  • まだベータ版のため、バグがある可能性がある
  • Eclipse/IntelliJ用のプラグインはまだありません。
  • TestSwarm * のように、os/ブラウザ/バージョンで結果をグループ化することはできません。しかし、テスト結果にブラウザ名とバージョンを出力します。
  • TestSwarm * のように過去のテスト結果の履歴が残らない。
  • Windowsでは完全に動作しない 2014年5月現在

* TestSwarmは継続的インテグレーションサーバでもありますが、Buster.jsは別途CIサーバを用意する必要があります。しかし、xUnit XMLのレポートを出力することができるので、Buster.jsと統合するのは簡単です。 ハドソン , バンブー またはその他のCIサーバを使用します。

テストスウォーム

https://github.com/jquery/testswarm

TestSwarmは、GitHubのウェブページに記載されているように、公式にアクティブな開発中ではなくなりました。Karma、browserstack-runner、またはInternを推奨しています。

ジャスミン

RubyやRuby on Railsに慣れた開発者なら興味を持つかもしれない、ビヘイビア駆動型フレームワークです(下の引用文にあります)。構文は RS仕様 は、Rails プロジェクトでテストに使用されるものです。

Jasmineのspecは、htmlページから(qUnitのやり方で)、またはテストランナーから(Karmaのやり方で)実行することができます。

<ブロッククオート

Jasmineは、JavaScriptのコードをテストするための動作駆動型開発フレームワークです。他のJavaScriptフレームワークには依存しません。また、DOMを必要としません。

このテストフレームワークの使用経験がある方は、詳細情報を投稿してください :)

プロジェクトのホーム http://jasmine.github.io/

QUnit

QUnitは、ブラウザ上でJavaScriptをテストすることに重点を置き、開発者に可能な限りの利便性を提供します。サイトからの紹介文です。

<ブロッククオート

QUnit は、強力で使いやすい JavaScript ユニットテストスイートです。jQuery、jQuery UI、jQuery Mobileプロジェクトで使用されており、あらゆる一般的なJavaScriptコードをテストすることが可能です。

QUnitはTestSwarm(上)と歴史を共有しています。

<ブロッククオート

QUnitはもともと、John ResigがjQueryの一部として開発したものです。2008年に独自のホーム、名前、APIドキュメントを取得し、他の人がユニットテストに使用できるようになりました。当時はまだjQueryに依存していました。2009年の書き換えでそれが修正され、現在ではQUnitは完全にスタンドアロンで動作するようになりました。 QUnitのアサーションメソッドはCommonJS Unit Testing仕様に準拠しており、これはQUnitにある程度影響を受けています。

プロジェクトのホーム http://qunitjs.com/

シノン

もう一つの素晴らしいツールは sinon.js の作者、Christian Johansenによるものです。 テスト駆動型JavaScript開発 . 彼自身による最高の表現です。

スタンドアローンテストスパイ、スタブ、モック JavaScript用。依存関係なし どのようなユニットテストフレームワークでも使用できます。

インターン

インターンWebサイト は、このリストにある他のテストフレームワークと直接機能を比較することができます。他のどのJavaScriptベースのテストシステムよりも、より多くの機能をすぐに利用できます。

JEST

新しいが、非常に強力なテストフレームワークです。スナップショットベースのテストも可能で、テスト速度を向上させ、テストの面で新しいダイナミズムを生み出します。

彼らの講演をご覧ください。 https://www.youtube.com/watch?v=cAKYQpTC7MA

もっといいのは はじめに