.NET 10 で dotnet test を使用してテストを実行する方法

Ashley Goolam

Ashley Goolam

27 8月 2025

.NET 10 で dotnet test を使用してテストを実行する方法

皆さん、こんにちは、.NET開発者の皆さん!Microsoft Testing Platform (MTP).NET 10 を使って、テストのスキルを向上させる準備はできていますか?従来のVSTestランナーで dotnet test を使ってきたなら、**MTP** があなたのテストをよりスムーズに、より速く、より柔軟にするために登場しました。この対話形式のガイドでは、**MTP**、別名 **MicrosoftTestingPlatform** が何であるか、なぜVSTestよりも優れているのか、そしてプロジェクトのために堅牢なテストを構築するために **.NET 10** で dotnet test と共にそれを活用する方法を探ります。基本的なMSTestプロジェクトから、スタンドアロン実行可能ファイルを含むマルチプロジェクトソリューションまで、この設定を試すために私が取った手順を説明します。さあ、**MTP, MicrosoftTestingPlatform, .NET 10, dotnet test** の世界に飛び込み、テストをもっと簡単で楽しいものにしましょう!

💡
美しいAPIドキュメントを生成する優れたAPIテストツールをお探しですか?

開発チームが最大限の生産性で協力できる、統合されたオールインワンプラットフォームをお探しですか?

Apidogはあなたのすべての要求に応え、Postmanをはるかに手頃な価格で置き換えます
button

.NET開発においてテストが重要な理由

実際に手を動かす前に、なぜテストが重要なのかについて話しましょう。小さなアプリを構築している場合でも、大規模なエンタープライズシステムを構築している場合でも、テストはコードが期待どおりに機能することを確認し、バグを早期に発見し、深夜のデバッグセッションからあなたを救います。MSTestMTP で作成するような自動化された単体テストは、機能を確認し、コード品質を向上させ、リファクタリングを容易にします。.NET 10 のパフォーマンス向上と MTP の最新のテストフレームワークにより、高速で信頼性が高く、CI/CDパイプラインに簡単に統合できるテストを作成する準備が整います。その方法を見てみましょうか?私の旅に続きましょう!

Microsoft Testing Platform (MTP) とは?

Microsoft Testing Platform (MTP)、または MicrosoftTestingPlatform は、古くなったVSTestランナーを置き換えるために導入された、Microsoftの次世代テストフレームワークです。複雑なアダプターとDLLベースの実行に依存するVSTestとは異なり、**MTP** は.NETでテストを実行するための合理化されたネイティブなエクスペリエンスを提供します。これは .NET 10 に組み込まれており、スタンドアロンの実行可能テストランナーや dotnet test とのより良い統合などの機能により、より高速で柔軟です。**MTP** はMSTest、NUnit、xUnitをサポートしており、CI/CDやクロスプラットフォーム開発を含む現代のワークフロー向けに設計されています。これは、.NET 10 のパフォーマンス向上に最適化された、VSTestのよりクールで効率的な兄弟と考えることができます。

ステップ1:MTPで基本的なMSTestプロジェクトを設定する

まず、**MTP** の動作を見るために、基本的なMSTestプロジェクトを作成することから始めましょう。私がどのように開始したかをご紹介します。

プロジェクトの作成

dotnet new mstest -n MyMtpTests

プロジェクトファイルの確認

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
    <PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
  </ItemGroup>
</Project>

テストの実行

cd MyMtpTests
dotnet test
vstest ランナー

何が起きているのか? これはVSTestを使った伝統的な設定ですが、**MTP** にアップグレードする前の確固たるベースラインです。このプロジェクトはテストをDLLとして実行しますが、それは問題ありませんが、**MTP** の実行可能ファイルアプローチほど柔軟ではありません。

ステップ2:MTP実行可能ファイルベースのテストランナーへの進化

それでは、dotnet test なしでテストを実行できる **MTP** のスタンドアロン実行可能ランナーに切り替えて、さらに面白くしましょう。私がどのように行ったかをご紹介します。

プロジェクトファイルの更新

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
    <!-- Enable MTP runner and executable output -->
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
    <OutputType>Exe</OutputType>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="MSTest.TestFramework" Version="3.10.2" />
    <PackageReference Include="MSTest.TestAdapter" Version="3.10.2" />
  </ItemGroup>
  <ItemGroup>
    <Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
  </ItemGroup>
</Project>

主な変更点:

プロジェクトのビルド

dotnet build
生成されたexeファイル

実行可能ファイルの実行

cd bin/Debug/net8.0
exeファイルでテストを実行

これがすごい理由:実行可能ファイルアプローチは、カスタムCI/CD設定や.NET SDKがインストールされていない環境に最適です。柔軟性において画期的であり、**MTP** はオーバーヘッドを削減することでVSTestよりも高速になります。

ステップ3:.NET 10とマルチプロジェクトテストでプロになる

実際のシナリオで **MTP** と **.NET 10** の輝きを見るために、クラスライブラリとテストを含むマルチプロジェクトソリューションを構築しましょう。私がどのように設定したかをご紹介します。

最終的なプロジェクト構造:

MyMtpSolution/
│
├── MyLibrary/
│   ├── Calculator.cs
│   └── MyLibrary.csproj
│
├── MyLibrary.Tests/
│   ├── CalculatorTests.cs
│   └── MyLibrary.Tests.csproj
│
├── MyMtpSolution.sln
└── dotnet.config

1. ソリューションの作成

dotnet new sln -n MyMtpSolution

2. クラスライブラリの作成

dotnet new classlib -n MyLibrary
namespace MyLibrary
{
    public class Calculator
    {
        public int Add(int a, int b) => a + b;
        public int Subtract(int a, int b) => a - b;
        public int Multiply(int a, int b) => a * b;
        public int Divide(int a, int b) =>
            b == 0 ? throw new ArgumentException("Cannot divide by zero.") : a / b;
    }
}

3. テストプロジェクトの作成

dotnet new mstest -n MyLibrary.Tests
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyLibrary;

namespace MyLibrary.Tests
{
    [TestClass]
    public class CalculatorTests
    {
        private Calculator _calculator;

        [TestInitialize]
        public void Setup()
        {
            _calculator = new Calculator();
        }

        [TestMethod]
        public void Add_ReturnsCorrectSum()
        {
            Assert.AreEqual(5, _calculator.Add(2, 3));
        }

        [TestMethod]
        public void Subtract_ReturnsCorrectDifference()
        {
            Assert.AreEqual(1, _calculator.Subtract(3, 2));
        }

        [TestMethod]
        public void Multiply_ReturnsCorrectProduct()
        {
            Assert.AreEqual(6, _calculator.Multiply(2, 3));
        }

        [TestMethod]
        public void Divide_ReturnsCorrectQuotient()
        {
            Assert.AreEqual(2, _calculator.Divide(6, 3));
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException))]
        public void Divide_ByZero_ThrowsException()
        {
            _calculator.Divide(6, 0);
        }
    }
}

4. プロジェクト参照の追加

dotnet add MyLibrary.Tests reference MyLibrary

5. ソリューションにプロジェクトを追加

dotnet sln MyMtpSolution.sln add MyLibrary/MyLibrary.csproj
dotnet sln MyMtpSolution.sln add MyLibrary.Tests/MyLibrary.Tests.csproj

6. MTPの設定

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <IsPackable>false</IsPackable>
    <IsTestProject>true</IsTestProject>
    <EnableMSTestRunner>true</EnableMSTestRunner>
    <TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.0" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
    <PackageReference Include="MSTest.TestFramework" Version="3.10.2" />
    <PackageReference Include="MSTest.TestAdapter" Version="3.10.2" />
  </ItemGroup>
  <ItemGroup>
    <Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
  </ItemGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

7. .NET 10へのアップグレード

.NET 10のダウンロード
<TargetFramework>net10.0</TargetFramework>

8. dotnet.configファイルの作成

[dotnet.test.runner]
name = "Microsoft.Testing.Platform"

9. テストのビルドと実行

dotnet test
テストの実行中

.NET 10とMTPがテストをどのように改善するか

MTP.NET 10 はテストを次のレベルへと引き上げます。

ユーザーは **MTP** について興奮しています:「これはVSTestのようですが、余計なものがなく、より速く、よりクリーンです!」 **.NET 10** を使えば、最先端のパフォーマンスが得られ、**MTP** は dotnet test を楽しくします。

トラブルシューティングのヒント

結論

これで、MTP (MicrosoftTestingPlatform), .NET 10, dotnet test を使用して最新のテスト環境を構築するプロになりました!基本的なMSTestプロジェクトから、スタンドアロン実行可能ファイルを含むマルチプロジェクトソリューションまで、**MTP** がVSTestをいかに凌駕し、**.NET 10** がパフォーマンスをいかに向上させるかを見てきました。さらにテストを追加したり、CI/CDパイプラインに統合したり、並列実行などの **MTP** の高度な機能を探索したりしてみてください。素晴らしいテスト設定をお持ちですか?ぜひ共有してください—テストの活気を保ちましょう!

button

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる