次の方法で共有


MSTest の概要

Microsoft Testing Framework である MSTest は、.NET アプリケーション用に完全にサポートされているオープンソースのクロスプラットフォーム テスト フレームワークです。 これにより、テストの記述と実行が可能になり、Visual Studio および Visual Studio Code テスト エクスプローラー、.NET CLI、および多くの CI パイプラインに統合されたテスト スイートが提供されます。

MSTest は GitHub でホストされ、サポートされているすべての .NET ターゲットで動作します。

主な機能

MSTest には、包括的なテスト機能が用意されています。

  • データドリブン テスト: DataRowDynamicData、および外部データ ソースを使用して、複数の入力でテストを実行します。
  • テスト ライフサイクル管理: アセンブリ、クラス、およびテスト レベルでのセットアップとクリーンアップ。
  • 並列実行: テストを同時に実行して実行時間を短縮します。
  • テスト組織: メタデータ属性を使用してテストを分類、優先順位付け、フィルター処理します。
  • コード アナライザー: 一般的な問題を検出し、コンパイル時にベスト プラクティスを適用します。
  • アサーション: 結果を検証するための包括的なアサーション メソッド。

サポートされているプラットフォーム

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.SdkMicrosoft.Testing.Platform (MTP) を使用することをお勧めします。

MSTest サポート ポリシー

v3.0.0 以降、MSTest は セマンティック バージョン管理に厳密に従います。

MSTest チームは、最新リリースバージョンのみをサポートし、ユーザーが常に最新バージョンに更新して、機能強化とセキュリティ パッチの恩恵を受けるよう強く推奨しています。 プレビュー リリースは Microsoft ではサポートされていませんが、最終リリースに先立ってパブリック テスト用に提供されます。

バージョン履歴

MSTest は、メジャー バージョン間で大幅な進化を遂げました。

  • MSTest v1: 元の Visual Studio テスト フレームワーク
  • MSTest v2: クロスプラットフォーム サポートを使用した最初のオープン ソース リリース
  • MSTest v3: アーキテクチャと機能が強化された最新の書き換え
  • MSTest v4: 強化された機能を備えた現在のバージョン

すべてのリリースの詳細については、 MSTest の変更ログを参照してください。

古いバージョンからアップグレードする場合は、移行ガイドを参照してください。

重大な変更

MSTest チームは、重大な変更を慎重に確認し、最小限に抑えます。 破壊的変更が必要な場合、チームは GitHub のお知らせ と問題に関 する破壊的変更ラベルを 使用してコミュニティに早期に通知し、ユーザーは変更がリリースされる前にフィードバックを提供し、懸念を提起する時間を与えます。

次のステップ