Visual StudioでJavaScript/TypeScriptの単体テストを扱う場合、2026年4月時点で押さえるべき結論は「Test Explorerから主要フレームワークのテストを実行できるが、プロジェクト種別ごとに設定ファイル・テストルート・実行方法を正しく分ける必要がある」という点です。特にReact/Vue系の.esprojではVitest、ASP.NET Core連携ではJestまたはMochaの設定が実務上の確認ポイントになります。
2026年4月24日のMicrosoftDocs GitHub履歴では、対象ドキュメントに対して「自動挿入メタデータの削除」と「所有者情報の更新」に関するコミットが確認できます。一方で、テストフレームワークの対応範囲や基本手順そのものは大きく変わったというより、Visual Studio 2026時代の開発フローに合わせて「どこでテストを実行し、どこでCI/CDに接続するか」を再確認する価値が高い内容です。(GitHub)
Visual StudioのJavaScript/TypeScript単体テストで確認すべき更新ポイント
Microsoft Learnの「Unit testing JavaScript and TypeScript in Visual Studio」は、Visual Studio内でJavaScript/TypeScriptの単体テストを作成・実行する方法を説明する公式ドキュメントです。コマンドプロンプトへ切り替えず、Visual StudioのTest Explorerからテストを扱える点が中心です。Node.jsプロジェクトとASP.NET Coreプロジェクトの両方が対象として説明されています。(Microsoft Learn)
2026年4月24日の更新を実務目線で見ると、見るべきポイントは次の3つです。
| 確認ポイント | 実務での意味 | 注意すべき読者 |
|---|---|---|
.esprojとASP.NET Coreで手順が分かれる | React/Vue/AngularなどのCLIベースプロジェクトと、ASP.NET Core内のTypeScriptテストでは設定場所が異なる | フロントエンド担当、フルスタック開発者 |
| Test Explorer連携が前提 | IDE上で検出・実行・デバッグできるため、ローカル検証がしやすい | 開発チーム、QA、DevOps |
vstest.consoleによる実行例がある | C#テストと同じようにAzure DevOpsなどのCIに寄せやすい | DevOps engineers、platform teams |
重要なのは、「Visual Studioが何でも自動で解決する」と考えないことです。Test Explorerにテストを表示させるには、JavaScriptTestRoot、JavaScriptTestFramework、package.json、tsconfig.jsonの位置関係を正しくそろえる必要があります。
対応フレームワークはMocha、Jasmine、Tape、Jest、Vitest
公式ドキュメントでサポート対象として挙げられているJavaScriptテストフレームワークは、Mocha、Jasmine、Tape、Jest、Vitestです。React/Vue/Angularなどのモダンフロントエンドでは、既存のCLIやテンプレートがどのテストフレームワークを使っているかを確認してからVisual Studio側の設定を合わせるのが安全です。(Microsoft Learn)
| フレームワーク | 向いているケース | Visual Studio設定時の見方 |
|---|---|---|
| Vitest | ViteベースのReact/Vue、軽量で高速なテスト環境 | .esprojのReact/Vueでは第一候補になりやすい |
| Jest | 既存React資産、スナップショットテスト、豊富なエコシステム | jest-editor-supportが必要になる点に注意 |
| Mocha | 柔軟な構成、Node.js寄りのテスト | アサーションライブラリとの組み合わせを確認 |
| Jasmine | Angular系や従来資産 | Angular側の標準構成と整合させる |
| Tape | シンプルなテスト記述 | チーム内で採用実績がある場合に検討 |
新規プロジェクトで迷う場合は、Vite/React/VueならVitest、既存のJest資産が多いならJest、ASP.NET Core内でシンプルに始めるならJestまたはMochaを選ぶと移行コストを抑えやすくなります。
CLIベースの.esprojではVitest設定が重要
Visual Studio 2022以降でサポートされるCLIベースの.esprojプロジェクトは、Test Explorerと連携できます。公式ドキュメントでは、ReactとVueの組み込みテストフレームワークは以前のJestからVitestに移っており、AngularではKarmaとJasmineが使われると説明されています。(Microsoft Learn)
React/Vueの.esprojでまず確認すべき設定は、プロジェクトファイル内の次の2つです。
<PropertyGroup>
<JavaScriptTestRoot>src\</JavaScriptTestRoot>
<JavaScriptTestFramework>Vitest</JavaScriptTestFramework>
</PropertyGroup>
JavaScriptTestRootは、Visual Studioがどのフォルダーからテストを探すかを指定します。src\を指定すればsrc配下、tests\を指定すればtests配下が探索対象になります。テストがTest Explorerに出ない場合、最初に疑うべきなのはテストコードそのものより、このテストルートの指定です。
.esprojでVitestを使う基本手順
| 手順 | 作業 | 確認ポイント |
|---|---|---|
| 1 | .esprojを編集 | JavaScriptTestRootとJavaScriptTestFrameworkを設定 |
| 2 | npmパッケージを追加 | vitestをインストール |
| 3 | package.jsonを編集 | scriptsに"test": "vitest"を追加 |
| 4 | テストファイルを作成 | 例:src/App.test.tsx |
| 5 | Test Explorerを開く | 表示されない場合はリビルド |
テストファイルの最小例は次のようになります。
import { describe, it, expect } from 'vitest';
describe('sample suite', () => {
it('returns expected value', () => {
expect(2).toBe(2);
});
});
この例は単純ですが、最初の動作確認には十分です。実務では、最初から複雑なUIテストを書くよりも、「Test Explorerに検出されるか」「Run Allで実行できるか」「失敗時にどの出力が出るか」を確認するための小さなテストを置く方が効率的です。
ASP.NET CoreプロジェクトではNuGet、npm、TypeScript設定を分けて考える
ASP.NET Coreプロジェクト内でJavaScript/TypeScriptの単体テストを扱う場合、.esprojとは設定の入口が変わります。公式ドキュメントでは、ASP.NET CoreプロジェクトにTypeScript、npm、単体テストのサポートを追加するために、必要なNuGetパッケージを含める手順が示されています。具体的にはMicrosoft.TypeScript.MSBuildとNpmを追加し、TypeScriptサポートはnpmのTypeScriptパッケージではなくNuGetパッケージで追加する説明になっています。(Microsoft Learn)
ASP.NET CoreでJestを使う場合の.csproj設定例は次のとおりです。
<PropertyGroup>
<JavaScriptTestRoot>tests\</JavaScriptTestRoot>
<JavaScriptTestFramework>Jest</JavaScriptTestFramework>
<GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>
Mochaを使う場合は、出力先に合わせて次のように指定する例が示されています。
<PropertyGroup>
<JavaScriptTestRoot>wwwroot\js\tests\</JavaScriptTestRoot>
<JavaScriptTestFramework>Mocha</JavaScriptTestFramework>
<GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>
ここでよくある失敗は、「テストファイルの置き場所」と「ビルド後のJavaScript出力先」を混同することです。TypeScriptのソースをtestsに置いているのか、コンパイル後のJavaScriptをwwwroot/js/testsに出しているのかで、JavaScriptTestRootの指定は変わります。
Jestを使う場合はjest-editor-supportを忘れない
公式ドキュメントでは、Jestを使用する場合、jestパッケージに加えてjest-editor-support npmパッケージが必要とされています。ASP.NET Coreの例でも、Jest向けにjest、jest-editor-support、@types/jestをdevDependenciesに追加する流れが示されています。(Microsoft Learn)
Jestで最低限確認したいpackage.jsonの例は次のとおりです。
{
"scripts": {
"test": "jest"
},
"devDependencies": {
"@types/jest": "^29.5.8",
"jest": "^29.7.0",
"jest-editor-support": "^31.1.2"
}
}
バージョンはプロジェクトの依存関係に合わせて調整が必要です。既存プロジェクトに導入する場合は、いきなり最新版へ上げるのではなく、現在のNode.js、TypeScript、既存テストランナーとの互換性を確認してから更新してください。
TypeScript設定で失敗しやすいのはoutfile
TypeScriptの単体テストがTest Explorerに表示されない場合、tsconfig.jsonのoutfile指定が原因になることがあります。公式ドキュメントでは、TypeScriptの場合、Test Explorerが単体テストを見つけられなくなるためoutfileオプションを使わないよう注意しています。一方で、outdirは利用できますが、package.jsonやtsconfig.jsonなどの構成ファイルはプロジェクトルートに置く必要があります。(Microsoft Learn)
避けたい設定は次のような形です。
{
"compilerOptions": {
"outfile": "wwwroot/js/app.js"
}
}
代わりに、出力先を分ける場合はoutDirを使います。
{
"compilerOptions": {
"sourceMap": true,
"target": "es5",
"outDir": "wwwroot/js"
},
"include": [
"scripts/**/*",
"tests/**/*"
],
"exclude": [
"node_modules"
]
}
JestでTypeScriptテストをJavaScriptへコンパイルしたい場合は、testsフォルダーをexcludeから外す必要があります。ここを間違えると、テストファイルを書いたのにビルド対象から除外され、Visual Studio側で検出できない状態になります。
Test Explorerで実行・デバッグする流れ
Visual Studio内で単体テストを実行する場合は、Test Explorerを開き、Run Allまたは対象テストを右クリックして実行します。選択したテストは右クリックからデバッグも可能です。テストはバックグラウンドで実行され、結果はTest Explorerに反映されます。(Microsoft Learn)
実務でおすすめの確認順序は次のとおりです。
| 状態 | 確認する場所 | 対処 |
|---|---|---|
| テストが表示されない | Test Explorer、.esproj/.csproj、tsconfig.json | リビルド、テストルート確認、outfile排除 |
| テストは表示されるが失敗する | Outputウィンドウ、npm script | npm test相当が通るか確認 |
| TypeScriptのブレークポイントに止まらない | source map、出力先、デバッグ設定 | sourceMap確認、必要に応じてdebuggerを使用 |
| npmノードが表示されない | Solution Explorer | プロジェクトのアンロード/リロード、またはpackage.json手動編集 |
TypeScriptのデバッグでは、通常はTypeScriptコードにブレークポイントを設定し、Test Explorerから対象テストを右クリックしてDebugを選びます。ただし、source mapを使う複雑な構成ではブレークポイントに到達しにくい場合があり、その場合はdebuggerキーワードを使う回避策が示されています。(Microsoft Learn)
CI/CDではvstest.consoleの利用も検討する
ローカルではTest Explorerで十分でも、チーム開発ではCI/CDでの再現性が重要です。公式ドキュメントでは、CLIベースの.esprojについて、通常のテストフレームワークのコマンドライン実行に加え、vstest.consoleを使う例も示されています。C#の単体テストと整合性を取りたい場合や、Azure DevOpsで実行したい場合に有効な選択肢です。(Microsoft Learn)
Visual Studio 2026系を想定した例は次の形です。
vstest.console .\MyProj.esproj /TestAdapterPath:"C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\Extensions\Microsoft\JavaScript"
Visual Studio 2022系では、次のようなパス例が示されています。
vstest.console .\MyProj.esproj /TestAdapterPath:"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\Microsoft\JavaScript"
CIで使う場合は、固定パスに依存しすぎない設計が重要です。Enterprise以外のエディション、Build Tools環境、セルフホストエージェントではパスが異なる可能性があります。実務では、エージェント起動時にVisual Studioのインストールパスを解決するスクリプトを用意し、TestAdapterPathを変数化しておくと運用しやすくなります。
コードカバレッジとプロファイリングは混同しない
対象ドキュメントでは、JavaScript/TypeScript単体テストの文脈で「プロファイリングテストとコードカバレッジは現在サポートされていない」と説明されています。つまり、Visual StudioのTest ExplorerでJS/TSテストを実行できることと、同じ画面でカバレッジ計測まで完結することは同義ではありません。(Microsoft Learn)
一方、Visual Studio 2026全体のリリースノートでは、Profiler Agentのユニットテスト対応や、Code CoverageのCommunity/Professionalエディションへの拡大といったテスト関連の改善も案内されています。これはIDE全体のテスト体験を強化する流れですが、JavaScript/TypeScriptの公式手順では、テスト実行・デバッグとカバレッジ計測を分けて設計するのが安全です。(Microsoft Learn)
実務では次のように切り分けると判断しやすくなります。
| 目的 | Visual Studio内での扱い | 代替・補完策 |
|---|---|---|
| テストの検出・実行 | Test Explorerを使う | npm script、vstest.console |
| TypeScriptテストのデバッグ | Test ExplorerからDebug | source map確認、debugger |
| JS/TSのカバレッジ | 対象ドキュメント上は非サポート扱い | Vitest/Jest側のcoverage機能をCIで実行 |
| パフォーマンス検証 | VS 2026全体ではユニットテスト連携の強化あり | 対象言語・プロジェクトで利用可否を個別確認 |
「Visual Studio 2026でコードカバレッジが強化されたから、JS/TSテストもすべて同じように使える」と判断すると、導入時に期待値がずれます。フロントエンドのカバレッジは、JestやVitestの--coverageをCIで回す設計にしておく方が現実的です。
開発チームが今すぐ確認すべきチェックリスト
Visual StudioでJavaScript/TypeScriptの単体テストを安定運用するには、最初にプロジェクトの種類を見極める必要があります。React/Vue/AngularのCLIベースなのか、ASP.NET CoreにTypeScriptを組み込んでいるのかで設定が変わるためです。
| チェック項目 | OKの目安 |
|---|---|
| プロジェクト種別を確認した | .esprojかASP.NET Coreかを把握している |
| テストフレームワークを決めた | Vitest/Jest/Mochaなどをチームで統一している |
| テストルートを明示した | JavaScriptTestRootが実際のテスト配置と一致している |
| npm scriptを用意した | npm testまたは同等のコマンドで実行できる |
| Test Explorerで検出できる | リビルド後にテスト一覧へ表示される |
| CIで再現できる | npm scriptまたはvstest.consoleで自動実行できる |
| カバレッジ方針を決めた | Visual StudioではなくJest/Vitest側で計測するか決めている |
特にDevOps engineersやplatform teamsは、ローカルのTest Explorerだけで完結させず、CI上で同じテストが動くかを早めに確認してください。IDE上では成功するがCIで失敗する場合、原因はVisual Studioではなく、Node.jsのバージョン、npmパッケージの復元、作業ディレクトリ、テストアダプターパスの違いにあることが多いです。
導入時に避けたい失敗パターン
Visual StudioのJS/TS単体テスト連携でつまずきやすいのは、機能不足よりも設定の不一致です。次のパターンは特に注意してください。
| 失敗パターン | 起きる問題 | 対策 |
|---|---|---|
JavaScriptTestRootと実際の配置が違う | Test Explorerに表示されない | src\、tests\、出力先を再確認 |
tsconfig.jsonでoutfileを使う | TypeScriptテストを検出できない | outDirへ変更 |
Jestでjest-editor-supportを入れていない | IDE連携が不安定になる | jestと一緒に追加 |
| npm scriptが未設定 | Visual StudioやCIから実行しづらい | "test"スクリプトを必ず用意 |
| カバレッジまでVisual Studioに期待する | 導入後に運用設計が崩れる | Jest/Vitest側で計測方針を決める |
| CIでVisual Studioのパスを固定する | エージェント差分で失敗する | パスを変数化し、環境ごとに解決 |
この中でも、JavaScriptTestRootとtsconfig.jsonは最初に確認する価値があります。テストコードを修正する前に、Visual Studioが「どこを見ているか」を確認するだけで解決するケースが多いためです。
Visual Studio 2026時代の実務的な使い分け
Visual StudioでJavaScript/TypeScriptの単体テストを使う価値は、単にテストを実行できることではありません。C#、ASP.NET Core、TypeScript、Node.jsが混在するプロジェクトで、開発者が同じIDE上でテスト結果を確認できる点にあります。
一方で、フロントエンド専業の大規模プロジェクトでは、すべてをVisual Studioに寄せるより、npm scriptやフレームワーク標準のCLIを中心にし、Visual Studioはローカルデバッグや統合確認に使う方が自然です。
おすすめの使い分けは次のとおりです。
| チーム構成 | おすすめ方針 |
|---|---|
| ASP.NET Core + TypeScriptのフルスタック開発 | Visual Studio Test Explorerを積極的に使う |
| React/Vue中心のフロントエンド開発 | Vitest/JestのCLIを基準にし、Visual Studio連携は補助にする |
| C#テストとJS/TSテストを同じCIで回す | vstest.console利用を検討する |
| グローバル開発チーム | npm scriptを標準化し、IDE依存を下げる |
| platform teamが共通テンプレートを配布する | .esproj/.csproj、package.json、tsconfig.jsonをテンプレート化する |
Visual StudioのTest Explorerは強力ですが、チーム全員が同じIDEを使うとは限りません。グローバルチームでは、Visual Studioで動くことよりも「CLIでも同じように動くこと」を基準に設計した方が、DevOpsやオンボーディングで失敗しにくくなります。
まずやるべきこと
Visual StudioでJavaScript/TypeScriptの単体テストを導入・見直しするなら、最初に既存プロジェクトを棚卸ししてください。見るべき順番は、プロジェクト種別、テストフレームワーク、テスト配置、npm script、Test Explorer検出、CI実行の6点です。
新規のReact/Vue系.esprojなら、まずVitestで最小テストを1つ作り、Test Explorerに表示されるか確認します。ASP.NET Coreなら、Microsoft.TypeScript.MSBuildとNpm、.csproj内のJavaScriptTestRoot、tsconfig.jsonのoutDirを確認します。
2026年4月24日の更新は、ドキュメント本文に大きな新機能を追加したものというより、Visual Studio 2026環境でJS/TS単体テストを扱う際に、公式手順を改めて確認するきっかけとして捉えるのが実務的です。Test Explorerでの実行、CI/CDでの再現性、TypeScript設定の整合性をそろえれば、Visual Studio上でもチーム開発でも安定した単体テスト運用に近づけます。

コメント