テスト
私達は 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% に設定されていることを確認します。