Skip to Content
統合テスト

結合テスト

このドキュメントでは、本プロジェクトで使用されている結合テストフレームワークについて説明します。

概要

結合テストは、Qwen Code のエンドツーエンドの機能を検証するために設計されています。これらは制御された環境でビルドされたバイナリを実行し、ファイルシステムとやり取りする際の動作が期待通りであることを確認します。

テストは integration-tests ディレクトリに配置されており、カスタムのテストランナーを使って実行されます。

テストの実行方法

結合テストは、デフォルトの npm run test コマンドでは実行されません。明示的に npm run test:integration:all スクリプトを使って実行する必要があります。

結合テストは以下のショートカットでも実行できます:

npm run test:e2e

特定のテストセットを実行する

テストファイルのサブセットを実行するには、npm run <integration test command> <file_name1> .... を使用できます。ここで <integration test command>test:e2e または test:integration* のいずれかであり、<file_name>integration-tests/ ディレクトリ内の任意の .test.js ファイルです。例えば、以下のコマンドは list_directory.test.jswrite_file.test.js を実行します:

npm run test:e2e list_directory write_file

名前で単一のテストを実行する

名前で単一のテストを実行するには、--test-name-pattern フラグを使用します:

npm run test:e2e -- --test-name-pattern "reads a file"

すべてのテストを実行する

統合テストの全スイートを実行するには、以下のコマンドを使用します:

npm run test:integration:all

サンドボックスマトリックス

all コマンドは、no sandboxingdockerpodman のテストを実行します。 各タイプは以下のコマンドで個別に実行できます:

npm run test:integration:sandbox:none
npm run test:integration:sandbox:docker
npm run test:integration:sandbox:podman

診断

integration test runner は、テスト失敗の追跡を支援するための診断オプションをいくつか提供しています。

テスト出力の保持

テスト実行中に作成された一時ファイルを検査用に保持できます。これはファイルシステム操作に関する問題をデバッグするのに役立ちます。

テスト出力を保持するには、KEEP_OUTPUT 環境変数を true に設定します。

KEEP_OUTPUT=true npm run test:integration:sandbox:none

出力が保持される場合、test runner はテスト実行用の一意のディレクトリへのパスを出力します。

詳細な出力

より詳細なデバッグ情報を得るには、VERBOSE 環境変数を true に設定してください。

VERBOSE=true npm run test:integration:sandbox:none

同じコマンド内で VERBOSE=trueKEEP_OUTPUT=true を使用すると、出力はコンソールにストリームされると同時に、テストの一時ディレクトリ内のログファイルにも保存されます。

詳細出力は、ログの出力元を明確に識別できるようにフォーマットされています:

--- TEST: <log dir>:<test-name> --- ... qwen コマンドからの出力 ... --- END TEST: <log dir>:<test-name> ---

Linting とフォーマット

コードの品質と一貫性を保つために、インテグレーションテストファイルはメインのビルドプロセスの一環として lint されます。手動で linter と自動修正を実行することも可能です。

Linter の実行

lint エラーをチェックするには、以下のコマンドを実行してください:

npm run lint

:fix フラグをコマンドに含めると、修正可能な lint エラーを自動で修正できます:

npm run lint:fix

ディレクトリ構造

統合テストは、.integration-testsディレクトリ内に各テスト実行ごとに一意のディレクトリを作成します。このディレクトリ内には各テストファイルごとにサブディレクトリが作成され、さらにその中に各テストケースごとのサブディレクトリが作成されます。

この構造により、特定のテスト実行、ファイル、またはケースのアーティファクトを簡単に見つけることができます。

.integration-tests/ └── <run-id>/ └── <test-file-name>.test.js/ └── <test-case-name>/ ├── output.log └── ...other test artifacts...

継続的インテグレーション

インテグレーションテストが常に実行されるようにするために、.github/workflows/e2e.yml に GitHub Actions のワークフローが定義されています。このワークフローは、main ブランチに対するプルリクエストや、プルリクエストがマージキューに追加された際に自動でインテグレーションテストを実行します。

ワークフローは異なるサンドボックス環境でテストを実行し、Qwen Code がそれぞれの環境で正しく動作することを確認します:

  • sandbox:none: サンドボックスなしでテストを実行します。
  • sandbox:docker: Docker コンテナ内でテストを実行します。
  • sandbox:podman: Podman コンテナ内でテストを実行します。
Last updated on