Testen
06.04.2024, 13:38 Uhr
Native AOT-Anwendungen mit MSTest testen
Das Entwicklerteam hat eine Vorschauversion für das Testen von Native AOT-Anwendungen mit MSTest veröffentlicht.
(Quelle: dotnetpro)
Die Unterstützung basiert auf einer Test-Engine, die von Grund auf neu entwickelt wurde. Diese ermöglicht es, Tests in Native AOT durchzuführen und arbeitet nahtlos mit dem bestehenden MSTest Runner (Microsoft.Testing.Platform) zusammen. Ein Schlüsselmerkmal dieser neuen Lösung ist die Nutzung von Source Generators, die es ermöglichen, Tests bereits während der Kompilierung zu entdecken. Dieser Ansatz löst eines der Hauptprobleme, die bisher das Kompilieren und Ausführen von Tests in Native AOT verhinderten.
Native AOT (Ahead-Of-Time Compilation) ermöglicht es, .NET-Anwendungen so zu publizieren, dass das resultierende Programm direkt in nativen Code kompiliert wird. Dies führt zu schnelleren Startzeiten, einem geringeren Speicherbedarf und eliminiert die Abhängigkeit von der .NET-Laufzeit. Native AOT eignet sich besonders für ASP.NET-Core-Anwendungen, die von den schnelleren Startzeiten profitieren, sowie für den Einsatz auf IoT-Geräten mit begrenzten Ressourcen.
Native AOT-Anwendungen können in Umgebungen ausgeführt werden, die das JIT-Compiling (Just-In-Time) von Code nicht zulassen, wie z.B. Spielkonsolen oder bestimmte IoT-Geräte. Durch die Entwicklung von Tests als Native AOT können diese auch auf solchen Geräten ausgeführt werden.
Um die neue Engine zu nutzen, müssen nur die beiden Pakete MSTest.Engine und MSTest.SourceGeneration per NuGet dazugeladen werden. Sie bieten derzeit eine grundlegende Funktionalität für das Ausführen von Tests, wie die Erkennung von [TestClass] und [TestMethod]-Attributen. Allerdings werden noch nicht alle Features von MSTest unterstützt. Zu den geplanten Erweiterungen gehören verschiedene Initialize- und Cleanup-Methoden, sowie die Verbesserung der Einstiegserfahrung durch ein neues MSTest.SDK.
Diese Innovation ist ein wichtiger Schritt nach vorn für Entwickler, die .NET-Anwendungen erstellen und testen. Es ermöglicht eine effizientere Entwicklung und bietet neue Möglichkeiten für das Testen von Anwendungen in Umgebungen, die bisher nicht zugänglich waren.