メインコンテンツにスキップ

テスト

私たちは Electron のコードカバレッジを高く保つことを目指しています。すべてのプルリクエストは、既存のすべてのテストに合格するだけでなく、変更されたコードと新しいシナリオをカバーする新しいテストを追加することが理想的です。Electron の可能な限り多くのコードパスとユースケースをキャプチャすることで、バグの少ないアプリをすべての人が出荷できるようにします。

このリポジトリには、JavaScript と C++ の両方のリンティングルールと、ユニットテストと統合テストが付属しています。Electron のコーディングスタイルについては、coding-style ドキュメントをご覧ください。

リンティング

変更が Electron のコーディングスタイルに準拠していることを確認するには、npm run lint を実行します。これにより、コードのどの領域に触れているかに応じて、さまざまなリンティングチェックが変更に対して実行されます。

これらのチェックの多くはプリコミットフックとして含まれているため、コミット時にエラーが検出される可能性が高くなります。

ユニットテスト

build-toolsを使用していない場合は、Electron のローカルビルド用に構成した名前が TestingReleaseDefault のいずれであるか、または process.env.ELECTRON_OUT_DIR を設定していることを確認してください。これらが設定されていないと、Electron は一部のテスト前の手順を実行できません。

すべてのユニットテストを実行するには、npm run test を実行します。ユニットテストは、spec フォルダーにある Electron アプリ(驚き!)です。独自の package.json があり、その依存関係はトップレベルの package.json では定義されていないことに注意してください。

パターンに一致する特定のテストのみを実行するには、npm run test -- -g=PATTERN を実行し、PATTERN を実行したいテストに一致する正規表現に置き換えます。例: IPC テストのみを実行する場合は、npm run test -- -g ipc を実行します。

Node.js スモークテスト

Node.js が Electron に組み込まれる方法に影響を与える可能性のある変更を加えた場合は、Node.js のカスタムフォークを使用して、Node.js のすべてのテストを実行するテストランナーがあります。

すべての Node.js テストを実行するには

$ node script/node-spec-runner.js

単一の Node.js テストを実行するには

$ node script/node-spec-runner.js parallel/test-crypto-keygen

ここで、ランナーに渡される引数は、Node.js ソースツリー内のテストへのパスです。

Windows 10 デバイスでのテスト

ユニットテストを実行するための追加の手順:

  1. Visual Studio 2019 がインストールされている必要があります。

  2. Node ヘッダーは構成に合わせてコンパイルする必要があります。

    ninja -C out\Testing electron:node_headers
  3. electron.lib は node.lib としてコピーする必要があります。

    cd out\Testing
    mkdir gen\node_headers\Release
    copy electron.lib gen\node_headers\Release\node.lib

フォントの欠落

一部の Windows 10 デバイスには、Meiryo フォントがインストールされておらず、フォントフォールバックテストが失敗する可能性があります。Meiryo をインストールするには

  1. Windows キーを押し、オプション機能の管理を検索します。
  2. 機能の追加をクリックします。
  3. 日本語追加フォントを選択し、インストールをクリックします。

ピクセル測定

正確なピクセル測定に依存する一部のテストは、浮動小数点精度のエラーが原因で、Hi-DPI スクリーン設定のデバイスでは正しく動作しない場合があります。これらのテストを正しく実行するには、デバイスのスケーリングが 100% に設定されていることを確認してください。

表示スケーリングを構成するには

  1. Windows キーを押し、ディスプレイ設定を検索します。
  2. スケールとレイアウトで、デバイスが 100% に設定されていることを確認してください。