Hallo, .NET-Entwickler! Bereit, Ihr Testspiel mit der Microsoft Testing Platform (MTP) und .NET 10 auf das nächste Level zu heben? Wenn Sie bisher dotnet test
mit dem traditionellen VSTest-Runner verwendet haben, schnallen Sie sich an – MTP ist hier, um Ihr Testen reibungsloser, schneller und flexibler zu gestalten. In diesem konversationsorientierten Leitfaden werden wir untersuchen, was MTP, auch bekannt als MicrosoftTestingPlatform, ist, warum es eine Verbesserung gegenüber VSTest darstellt und wie Sie es mit dotnet test in .NET 10 nutzen können, um robuste Tests für Ihre Projekte zu erstellen. Ich führe Sie durch die Schritte, die ich unternommen habe, um dieses Setup zu experimentieren, von einem grundlegenden MSTest-Projekt bis hin zu einer Multi-Projekt-Lösung mit einer eigenständigen ausführbaren Datei. Tauchen wir ein in die Welt von MTP, MicrosoftTestingPlatform, .NET 10, dotnet test und machen wir das Testen einfacher und unterhaltsamer!
Möchten Sie eine integrierte All-in-One-Plattform, damit Ihr Entwicklerteam mit maximaler Produktivität zusammenarbeiten kann?
Apidog erfüllt all Ihre Anforderungen und ersetzt Postman zu einem viel günstigeren Preis!
Warum ist Testen in der .NET-Entwicklung wichtig?
Bevor wir uns die Hände schmutzig machen, sprechen wir darüber, warum Testen eine große Sache ist. Egal, ob Sie eine kleine App oder ein riesiges Unternehmenssystem erstellen, Tests stellen sicher, dass Ihr Code wie erwartet funktioniert, Fehler frühzeitig erkannt werden und Sie vor nächtlichen Debugging-Sitzungen bewahrt werden. Automatisierte Unit-Tests, wie die, die wir mit MSTest und MTP erstellen werden, ermöglichen es Ihnen, die Funktionalität zu überprüfen, die Codequalität zu verbessern und Refactoring zum Kinderspiel zu machen. Mit den Leistungssteigerungen von .NET 10 und dem modernen Test-Framework von MTP sind Sie bereit, Tests zu schreiben, die schnell, zuverlässig und einfach in CI/CD-Pipelines zu integrieren sind. Bereit zu sehen, wie? Folgen wir meiner Reise!
Was ist die Microsoft Testing Platform (MTP)?
Die Microsoft Testing Platform (MTP), oder MicrosoftTestingPlatform, ist Microsofts Test-Framework der nächsten Generation, das eingeführt wurde, um den alternden VSTest-Runner zu ersetzen. Im Gegensatz zu VSTest, das auf komplexen Adaptern und DLL-basierter Ausführung basiert, bietet MTP ein optimiertes, natives Erlebnis für die Ausführung von Tests in .NET. Es ist in .NET 10 integriert, wodurch es schneller und flexibler ist, mit Funktionen wie eigenständigen ausführbaren Test-Runnern und einer besseren Integration mit dotnet test
. MTP unterstützt MSTest, NUnit und xUnit und ist für moderne Workflows konzipiert, einschließlich CI/CD und plattformübergreifender Entwicklung. Sie können es sich als den cooleren, effizienteren Bruder von VSTest vorstellen, optimiert für die Leistungsverbesserungen von .NET 10.
Schritt 1: Einrichten eines grundlegenden MSTest-Projekts mit MTP
Beginnen wir einfach mit der Erstellung eines grundlegenden MSTest-Projekts, um MTP in Aktion zu sehen. So habe ich angefangen:
Projekt erstellen:
- Öffnen Sie Ihr Terminal und erstellen Sie ein neues MSTest-Projekt mit der .NET CLI:
dotnet new mstest -n MyMtpTests
- Dies erstellt einen Projektordner
MyMtpTests
mit einer Standard-Testdatei (UnitTest1.cs
) und einer.csproj
-Datei.
Projektdatei überprüfen:
- Die generierte
MyMtpTests.csproj
sieht etwa so aus:
<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>
- Dies richtet ein Standard-MSTest-Projekt mit VSTest ein, das Coverlet für die Codeabdeckung und Microsoft.NET.Test.Sdk für die Testausführung verwendet.
Tests ausführen:
- Navigieren Sie zum Projektordner:
cd MyMtpTests
- Führen Sie den Standardtest aus:
dotnet test
- Der VSTest-Runner führt den Beispieltest in
UnitTest1.cs
aus, und Sie sehen eine Ausgabe, die bestätigt, dass der Test bestanden wurde, zusammen mit Abdeckungsstatistiken von Coverlet.

Was passiert? Dies ist ein traditionelles Setup mit VSTest, aber es ist eine solide Grundlage, bevor wir auf MTP aktualisieren. Das Projekt führt Tests als DLL aus, was in Ordnung ist, aber nicht so flexibel wie MTPs ausführbarer Ansatz.
Schritt 2: Entwicklung zu einem ausführbaren MTP-basierten Test-Runner
Machen wir es jetzt spannender, indem wir zum eigenständigen ausführbaren Runner von MTP wechseln, mit dem Sie Tests ohne dotnet test
ausführen können. So habe ich es gemacht:
Projektdatei aktualisieren:
- Ändern Sie
MyMtpTests.csproj
, um MTP zu aktivieren und eine ausführbare Datei zu erstellen:
<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>
Wesentliche Änderungen:
<EnableMSTestRunner>true</EnableMSTestRunner>
: Aktiviert den Test-Runner von MTP.<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
: Gewährleistet die Kompatibilität mitdotnet test
.<OutputType>Exe</OutputType>
: Gibt eine eigenständige ausführbare Datei anstelle einer DLL aus.
Projekt erstellen:
- Ausführen:
dotnet build
- Dies generiert eine ausführbare Datei (z.B.
MyMtpTests.exe
) im Ordnerbin/Debug/net8.0
.

Ausführbare Datei ausführen:
- Navigieren Sie zum Ausgabeverzeichnis:
cd bin/Debug/net8.0
- Führen Sie die ausführbare Datei aus:
- Windows:
MyMtpTests.exe
- macOS/Linux:
./MyMtpTests
- Die Tests laufen als eigenständige Konsolen-App, kein
dotnet test
erforderlich!

Warum das rockt: Der ausführbare Ansatz ist perfekt für benutzerdefinierte CI/CD-Setups oder Umgebungen ohne installiertes .NET SDK. Es ist ein Wendepunkt für Flexibilität, und MTP macht es schneller als VSTest, indem es den Overhead reduziert.
Schritt 3: Professionell werden mit .NET 10 und Multi-Projekt-Tests
Um MTP und .NET 10 in einem realen Szenario glänzen zu sehen, erstellen wir eine Multi-Projekt-Lösung mit einer Klassenbibliothek und Tests. So habe ich es eingerichtet:
Endgültige Projektstruktur:
MyMtpSolution/
│
├── MyLibrary/
│ ├── Calculator.cs
│ └── MyLibrary.csproj
│
├── MyLibrary.Tests/
│ ├── CalculatorTests.cs
│ └── MyLibrary.Tests.csproj
│
├── MyMtpSolution.sln
└── dotnet.config
1. Eine Lösung erstellen:
- Beginnen Sie neu mit einer Lösung:
dotnet new sln -n MyMtpSolution
2. Eine Klassenbibliothek erstellen:
- Fügen Sie ein Klassenbibliotheksprojekt hinzu:
dotnet new classlib -n MyLibrary
- Implementieren Sie eine
Calculator
-Klasse inMyLibrary/Calculator.cs
:
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. Ein Testprojekt erstellen:
- Erstellen Sie ein MSTest-Projekt:
dotnet new mstest -n MyLibrary.Tests
- Fügen Sie Tests in
MyLibrary.Tests/UnitTest1.cs
hinzu:
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. Projektverweise hinzufügen:
- Verknüpfen Sie das Testprojekt mit der Bibliothek:
dotnet add MyLibrary.Tests reference MyLibrary
5. Projekte zur Lösung hinzufügen:
- Fügen Sie beide Projekte in die Lösung ein:
dotnet sln MyMtpSolution.sln add MyLibrary/MyLibrary.csproj
dotnet sln MyMtpSolution.sln add MyLibrary.Tests/MyLibrary.Tests.csproj
6. Für MTP konfigurieren:
- Aktualisieren Sie
MyLibrary.Tests.csproj
, um MTP zu aktivieren:
<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>
- Optional können Sie
MyLibrary.csproj
zur Konsistenz aktualisieren (obwohl nicht unbedingt erforderlich):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
7. Auf .NET 10 aktualisieren:
- Laden Sie das .NET 10 SDK von dotnet.microsoft.com herunter (stellen Sie sicher, dass es mit Ihrem Betriebssystem kompatibel ist – Windows, macOS oder Linux).

- Aktualisieren Sie beide
.csproj
-Dateien, um .NET 10 als Ziel festzulegen:
<TargetFramework>net10.0</TargetFramework>
8. Eine dotnet.config-Datei erstellen:
- Erstellen Sie im Lösungsstammverzeichnis
dotnet.config
mit:
[dotnet.test.runner]
name = "Microsoft.Testing.Platform"
- Dies ermöglicht die native Integration von MTP mit
dotnet test
in .NET 10.
9. Tests erstellen und ausführen:
- Vom Lösungsstammverzeichnis aus:
dotnet test
- MTP führt die Tests aus und nutzt die Optimierungen von .NET 10. Sie sehen die Ausgabe für alle Tests, einschließlich Bestanden/Fehlgeschlagen und Abdeckungsstatistiken.

Warum das großartig ist: .NET 10 bringt Leistungsverbesserungen (schnelleres JIT, besseres Speichermanagement), und MTPs native Integration eliminiert die Legacy-Brücken von VSTest, wodurch Tests schneller und zuverlässiger werden. Das Multi-Projekt-Setup ahmt reale Anwendungen nach, mit einer Bibliothek und einem separaten Testprojekt.
Wie .NET 10 und MTP das Testen verbessern
MTP und .NET 10 heben das Testen auf die nächste Stufe:
- Geschwindigkeit: MTPs nativer Runner ist für .NET 10 optimiert und reduziert die Startzeit im Vergleich zu VSTest.
- Flexibilität: Eigenständige ausführbare Dateien machen Tests portabel, ideal für benutzerdefinierte CI/CD- oder containerisierte Umgebungen.
- Skalierbarkeit: Die Multi-Projekt-Unterstützung bewältigt komplexe Lösungen, wobei MTP eine konsistente Testausführung gewährleistet.
- Moderne Funktionen: .NET 10s AOT-Kompilierung und Speicheroptimierungen lassen Tests schneller laufen, während MTP erweiterte Funktionen wie parallele Testausführung und benutzerdefinierte Reporter unterstützt.
Benutzer schwärmen von MTP: „Es ist wie VSTest, aber ohne den Ballast – schneller und sauberer!“ Mit .NET 10 erhalten Sie modernste Leistung, und MTP macht dotnet test
zu einer Freude.
Tipps zur Fehlerbehebung
- Tests werden nicht ausgeführt? Stellen Sie sicher, dass das .NET 10 SDK installiert ist und
TargetFramework
aufnet10.0
gesetzt ist. - MTP nicht aktiviert? Überprüfen Sie, ob
EnableMSTestRunner
undTestingPlatformDotnetTestSupport
in der.csproj
oderdotnet.config
vorhanden sind. - Abdeckung fehlt? Überprüfen Sie, ob
coverlet.collector
enthalten ist und führen Siedotnet test --collect:"XPlat Code Coverage"
aus. - Ausführbare Datei schlägt fehl? Stellen Sie sicher, dass
OutputType
aufExe
gesetzt ist und führen Siedotnet build
aus, bevor Sie die.exe
ausführen.
Fazit
Sie sind jetzt ein Profi in der Verwendung von MTP (MicrosoftTestingPlatform), .NET 10, dotnet test, um ein modernes Test-Setup zu erstellen! Von einem grundlegenden MSTest-Projekt bis hin zu einer Multi-Projekt-Lösung mit einer eigenständigen ausführbaren Datei haben Sie gesehen, wie MTP VSTest übertrifft und wie .NET 10 die Leistung steigert. Versuchen Sie, weitere Tests hinzuzufügen, in Ihre CI/CD-Pipeline zu integrieren oder die erweiterten Funktionen von MTP wie die parallele Ausführung zu erkunden. Haben Sie coole Test-Setups? Teilen Sie sie – lassen Sie uns die Test-Vibes am Laufen halten!