Skip to Content
デベロッパーガイドDevelopment統合テスト

統合テスト

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

概要

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

これらのテストは integration-tests ディレクトリにあり、カスタムテストランナーを使用して実行されます。

テストの実行

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

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

npm run test:e2e

特定のテストセットの実行

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

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

診断

統合テストランナーには、テストの失敗を追跡するための診断オプションがいくつか用意されています。

テスト出力の保持

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

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

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

出力が保持されると、テストランナーはそのテスト実行の一意のディレクトリへのパスを表示します。

詳細出力

より詳細なデバッグを行うには、VERBOSE 環境変数を true に設定します。

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

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

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

--- TEST: <log dir>:<test-name> --- ... output from the qwen command ... --- END TEST: <log dir>:<test-name> ---

リンターとフォーマッター

コードの品質と一貫性を確保するため、統合テストファイルはメインビルドプロセスの一部としてリンターが実行されます。手動でリンターや自動修正を実行することもできます。

リンターの実行

リンターエラーをチェックするには、以下のコマンドを実行します:

npm run lint

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

npm run lint:fix

ディレクトリ構造

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

この構造により、特定のテスト実行、ファイル、ケースのアーティファクトを簡単に見つけられます。

.integration-tests/ └── <run-id>/ └── <test-file-name>.test.ts/ └── <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