テスト
私達は Electron のコード網羅率を維持することを目指しています。 すべてのプルリクエストは、既存のすべてのテストに合格するだけでなく、変更されたコードと新しいシナリオをカバーする新しいテストを追加することを推奨します。 できるだけ多くのコードパスと Electron のユースケースを確保することで、より少ないバグでアプリを出荷することができます。
このリポジトリには、JavaScript と C++ の両方に対する lint ルール、同様に対応するユニットテストと統合テストが付属しています。 Electron のコーディングスタイルの詳細については、コーディングスタイル ドキュメントを参照してください。
Lint
変更した内容が Electron のコーディングスタイルに準拠していることを確認するために、npm run lint
を実行してください。これは、コードのどの部分を操作したかによって、さまざまな lint チェックを変更に対して実行します。
これらのチェックの多くはコミッ ト前のフックに含まれているため、コミット時にエラーが検出される可能性が高いです。
単体テスト
build-tools を使用していない場合は、Electron のローカルビルド用コンフィグ名を確認してください。これは、Testing
、Release
、Default
、設定した 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 に組み込む方法に影響を与えるような変更を行ったと きのために、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 デバイス上でテスト
単体テストを実行するための追加手順:
-
Visual Studio 2019 をインストールする必要があります。
-
Node ヘッダーは構成に合わせてコンパイルする必要があります。
ninja -C out\Testing electron:node_headers
-
electron.lib を node.lib としてコピーする必要があります。
cd out\Testing
mkdir gen\node_headers\Release
copy electron.lib gen\node_headers\Release\node.lib
フォントの欠落
一部の Windows 10 デバイス はメイリオフォントがインストールされていない状態で出荷されるため、フォントフォールバックテストが失敗する可能性があります。 メイリオをインストールするには以下のようにします。
- Windows キーを押して オプション機能の管理 と検索します。
- 機能の追加 をクリックします。
- 日本語追加フォント を選択して インストール をクリックします。
ピクセル測定
正確なピクセル測定値に依存するようなテストは、浮動小数点精度の誤差のために Hi-DPI 画面設定のデバイスでは正しく動作しない場合があります。 これらのテストを正常に実行するには、そのデバイスが倍率 100% に設定されていることを確認してください。
ディスプレイ倍率を設定するには、
- Windows キーを押して ディスプレイの設定 と検索します。
- スケールとレイアウト で、そのデバイスが 100% に設定されていることを確認します。