Microsoft Testing Framework である MSTest は、.NET アプリケーション用に完全にサポートされているオープンソースのクロスプラットフォーム テスト フレームワークです。 これにより、テストの記述と実行が可能になり、Visual Studio および Visual Studio Code テスト エクスプローラー、.NET CLI、および多くの CI パイプラインに統合されたテスト スイートが提供されます。
MSTest は GitHub でホストされ、サポートされているすべての .NET ターゲットで動作します。
主な機能
MSTest には、包括的なテスト機能が用意されています。
-
データドリブン テスト:
DataRow、DynamicData、および外部データ ソースを使用して、複数の入力でテストを実行します。 - テスト ライフサイクル管理: アセンブリ、クラス、およびテスト レベルでのセットアップとクリーンアップ。
- 並列実行: テストを同時に実行して実行時間を短縮します。
- テスト組織: メタデータ属性を使用してテストを分類、優先順位付け、フィルター処理します。
- コード アナライザー: 一般的な問題を検出し、コンパイル時にベスト プラクティスを適用します。
- アサーション: 結果を検証するための包括的なアサーション メソッド。
サポートされているプラットフォーム
MSTest では、さまざまな .NET プラットフォームとターゲット フレームワークがサポートされています。 次の表は、プラットフォームのサポートと特別な考慮事項をまとめたものです。
| Platform | ターゲット フレームワーク | スレッド処理のサポート | 特殊な属性 | 注記 |
|---|---|---|---|---|
| .NET | .NET 8 以降 | 完全並列化 | すべての属性 | 新しいプロジェクトに推奨 |
| .NET Framework | 4.6.2+ | 完全並列化 | すべての属性 | 完全な機能のサポート |
| UWP | UAP 10、UAP を使用した .NET 9 以降 | UI スレッド | UITestMethod |
設定<UseUwp>true</UseUwp>が必要です。UWP のサンプルを参照してください |
| WinUI 3 | .NET 8 以降 | UI スレッド | UITestMethod |
Windows App SDK が必要です。WinUI のサンプルを参照してください |
| ネイティブ AOT | .NET 8 以降 | 完全並列化 | ほとんどの属性 | 制限付き機能セット。ネイティブ AOT サンプルを参照してください |
プラットフォーム固有の考慮事項
UWP テスト
UWP テストは UWP アプリ コンテナーで実行され、多くの操作に UI スレッドが必要です。
[TestClass]
public class UwpTests
{
[UITestMethod]
public void TestUwpControl()
{
// Test runs on UI thread
var button = new Button();
Assert.IsNotNull(button);
}
}
UWP のセットアップについては、 BlankUwpNet9App サンプルを参照してください。
WinUI 3 テスト
WinUI 3 テストでは、ビジュアル コンポーネントをテストするために UI スレッド アクセスも必要です。
[TestClass]
public class WinUITests
{
[UITestMethod]
public void TestWinUIControl()
{
// Test runs on UI thread
var window = new MainWindow();
Assert.IsNotNull(window);
}
}
WinUI のセットアップについては、 BlankWinUINet9App サンプル と MSTestRunnerWinUI サンプルを参照してください。
ネイティブ AOT
ネイティブ AOT コンパイルは、リフレクション機能が低下するため、いくつかの制限付きでサポートされています。 可能な場合はソース ジェネレーターを使用し、 NativeAotRunner サンプルを使用して AOT シナリオをテストします。
STA スレッドのサポート
Windows COM 相互運用シナリオの場合、MSTest はシングルスレッド アパートメントでテストを実行するための STATestClass 属性と STATestMethod 属性を提供します。
UseSTASynchronizationContextでの非同期継続のサポートなど、STA スレッドの詳細については、スレッド属性を参照してください。
テスト ランナー
MSTest では、次の 2 つのテスト実行プラットフォームがサポートされています。
- Microsoft.Testing.Platform (MTP):パフォーマンスと拡張性が向上した、推奨される最新のテスト プラットフォーム。
- VSTest: .NET の元のテスト プラットフォームと既定のテスト プラットフォーム。
新しいプロジェクトでは、MSTest.Sdk で Microsoft.Testing.Platform (MTP) を使用することをお勧めします。
MSTest サポート ポリシー
v3.0.0 以降、MSTest は セマンティック バージョン管理に厳密に従います。
MSTest チームは、最新リリースバージョンのみをサポートし、ユーザーが常に最新バージョンに更新して、機能強化とセキュリティ パッチの恩恵を受けるよう強く推奨しています。 プレビュー リリースは Microsoft ではサポートされていませんが、最終リリースに先立ってパブリック テスト用に提供されます。
バージョン履歴
MSTest は、メジャー バージョン間で大幅な進化を遂げました。
- MSTest v1: 元の Visual Studio テスト フレームワーク
- MSTest v2: クロスプラットフォーム サポートを使用した最初のオープン ソース リリース
- MSTest v3: アーキテクチャと機能が強化された最新の書き換え
- MSTest v4: 強化された機能を備えた現在のバージョン
すべてのリリースの詳細については、 MSTest の変更ログを参照してください。
古いバージョンからアップグレードする場合は、移行ガイドを参照してください。
重大な変更
MSTest チームは、重大な変更を慎重に確認し、最小限に抑えます。 破壊的変更が必要な場合、チームは GitHub のお知らせ と問題に関 する破壊的変更ラベルを 使用してコミュニティに早期に通知し、ユーザーは変更がリリースされる前にフィードバックを提供し、懸念を提起する時間を与えます。
次のステップ
.NET