مقدمه
در دنیای توسعه نرمافزار، آزموننویسی (Unit Testing) یکی از ستونهای اصلی تضمین کیفیت و پایداری کد است. با گسترش پروژهها و پیچیدهتر شدن نیازهای توسعه، انتخاب ابزارهای مناسب برای اجرای آزمونها اهمیت بیشتری پیدا کرده است. پلتفرم تست مایکروسافت (Microsoft.Testing.Platform) بهعنوان یک ابزار مدرن و سبکوزن معرفی شده است که جایگزینی برای پلتفرم قدیمیتر VSTest ارائه میدهد. این پلتفرم با هدف بهبود عملکرد، افزایش انعطافپذیری و پشتیبانی از فناوریهای جدید داتنت طراحی شده است. با انتشار پیشنمایش داتنت 10 (.NET 10 Preview)، پشتیبانی بومی از این پلتفرم در دستور dotnet test ادغام شده است که گامی بزرگ در جهت سادهسازی فرآیند آزموننویسی برای توسعهدهندگان به شمار میرود. این مقاله به بررسی نحوه پشتیبانی از پلتفرم تست مایکروسافت در داتنت 10، چگونگی پیکربندی آن و مزایای استفاده از این ابزار میپردازد.
معرفی پلتفرم تست مایکروسافت
پلتفرم تست مایکروسافت یک ابزار آزموننویسی سبک و قابلحمل است که برای اجرای آزمونها در محیطهای مختلف، از جمله خط فرمان (Command Line)، پایپلاینهای یکپارچهسازی مداوم (CI Pipelines)، و محیطهای توسعه یکپارچه (IDE) مانند ویژوال استودیو طراحی شده است. برخلاف VSTest که بهطور سنتی در ویژوال استودیو و داتنت استفاده میشد، این پلتفرم با معماری مدرنتر، فرآیندهای کمتری را اجرا میکند و از فناوریهایی مانند Native AOT و تکفایل (Single-File Applications) پشتیبانی میکند. این ویژگیها باعث کاهش سربار (Overhead) و افزایش سرعت اجرای آزمونها میشوند.
یکی از چالشهای اصلی توسعهدهندگان در استفاده از پلتفرمهای جدید، پیچیدگیهای مربوط به پیکربندی و ادغام با ابزارهای موجود است. تا پیش از داتنت 10، استفاده از Microsoft.Testing.Platform نیازمند ابزارهای سفارشی یا تنظیمات اضافی بود که پذیرش آن را برای پروژههای روزمره دشوار میکرد. اما با معرفی پشتیبانی بومی در دستور dotnet test، توسعهدهندگان میتوانند بهسادگی با افزودن یک فایل پیکربندی، از این پلتفرم بهرهمند شوند.
نحوه فعالسازی پلتفرم تست مایکروسافت در داتنت 10
برای استفاده از پلتفرم تست مایکروسافت در داتنت 10، باید یک فایل پیکربندی با نام dotnet.config در ریشه راهحل (Solution) یا مخزن پروژه (Repository) ایجاد کنید. این فایل از فرمت INI مانند استفاده میکند و شامل تنظیمات سادهای برای انتخاب پلتفرم آزمون است. کد زیر نمونهای از محتوای این فایل را نشان میدهد:
[dotnet.test:runner]
name = "Microsoft.Testing.Platform"
این تنظیم به دستور dotnet test اعلام میکند که بهجای VSTest، از Microsoft.Testing.Platform بهعنوان اجراکننده آزمونها استفاده کند. نکته مهم این است که در در پیشنمایش چهارم داتنت 10، کلید این بخش به [dotnet.test.runner] تغییر خواهد کرد. این تغییر نشاندهنده تلاش مایکروسافت برای استانداردسازی نامگذاری در نسخههای آینده است.
پس از ایجاد فایل dotnet.config، میتوانید دستور dotnet test را همانند گذشته اجرا کنید، اما این بار آزمونها توسط Microsoft.Testing.Platform پردازش میشوند. این فرآیند به توسعهدهندگان اجازه میدهد بدون نیاز به تغییر قابلتوجه در جریان کاری (Workflow) خود، از مزایای پلتفرم جدید بهرهمند شوند.
مزایای استفاده از پلتفرم تست مایکروسافت
استفاده از Microsoft.Testing.Platform چندین مزیت کلیدی دارد که آن را به گزینهای جذاب برای پروژههای مدرن تبدیل میکند.
- نخست، این پلتفرم سبکتر و سریعتر از VSTest است. با کاهش تعداد فرآیندهای اجرایی و حذف سریالسازی JSON، سربار اجرایی کاهش مییابد و زمان اجرای آزمونها بهبود مییابد. این امر بهویژه در پروژههای بزرگ با تعداد زیادی آزمون، تأثیر قابلتوجهی دارد.
- دوم، این پلتفرم از قابلیتهای پیشرفته داتنت، مانند Native AOT و برنامههای تکفایل، پشتیبانی میکند. این ویژگیها امکان اجرای آزمونها در محیطهای متنوعتر و با کارایی بالاتر را فراهم میکنند. برای مثال، در سناریوهایی که منابع سیستمی محدود هستند، مانند محیطهای CI/CD، این بهینهسازیها میتوانند تفاوت چشمگیری ایجاد کنند.
- سوم، Microsoft.Testing.Platform انعطافپذیری بالایی در پیکربندی ارائه میدهد. توسعهدهندگان میتوانند از طریق فایل testconfig.json یا متغیرهای محیطی، رفتار پلتفرم را تنظیم کنند. برای نمونه، میتوان زبان گزارشها را تغییر داد یا سطح جزئیات لاگها را تنظیم کرد. این قابلیتها به تیمها اجازه میدهد تا پلتفرم را با نیازهای خاص خود هماهنگ کنند.
ادغام با ابزارهای موجود
یکی از نگرانیهای توسعهدهندگان هنگام مهاجرت به یک پلتفرم جدید، سازگاری با ابزارها و فرآیندهای موجود است. خوشبختانه، Microsoft.Testing.Platform با ابزارهای رایج مانند ویژوال استودیو (Visual Studio) و ویژوال استودیو کد (Visual Studio Code) ادغام شده است. از نسخه 17.12 ویژوال استودیو، Test Explorer بهطور کامل از پروتکل این پلتفرم پشتیبانی میکند. این ادغام به توسعهدهندگان اجازه میدهد تا آزمونهای خود را مستقیماً از محیط توسعه اجرا یا دیباگ کنند.
علاوه بر این، در پایپلاینهای Azure DevOps، میتوان از تسک DotNetCoreCLI@2 برای اجرای آزمونها با Microsoft.Testing.Platform استفاده کرد. این تسک جایگزین تسک قدیمی VSTest شده و نیازی به تغییرات اساسی در پایپلاین ندارد. این سازگاری باعث میشود که مهاجرت به پلتفرم جدید برای تیمهایی که از ابزارهای مایکروسافت استفاده میکنند، روان و بدون دردسر باشد.
مثال کاربردی
برای درک بهتر، فرض کنید پروژهای با چندین پروژه آزمون دارید که از MSTest بهعنوان چارچوب آزمون استفاده میکند. برای مهاجرت به Microsoft.Testing.Platform، ابتدا فایل dotnet.config را با محتوای زیر در ریشه راهحل ایجاد میکنید:
[dotnet.test:runner]
name = "Microsoft.Testing.Platform"
سپس، در فایل پروژه (csproj) هر پروژه آزمون، تنظیمات زیر را اضافه میکنید تا پشتیبانی از پلتفرم فعال شود:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<OutputType>Exe</OutputType>
<EnableMSTestRunner>true</EnableMSTestRunner>
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MSTest" Version="3.8.0" />
<PackageReference Include="Microsoft.Testing.Extensions.CodeCoverage" Version="17.10.1" />
</ItemGroup>
</Project>با اجرای دستور dotnet test، آزمونها با استفاده از Microsoft.Testing.Platform اجرا میشوند. برای مشاهده پوشش کد (Code Coverage)، میتوانید از گزینه --coverage استفاده کنید:
dotnet test -- --coverage
این دستور یک فایل coverage.xml در پوشه TestResults تولید میکند که میتوان آن را با ابزارهایی مانند ReportGenerator به گزارش HTML تبدیل کرد. این مثال ساده نشان میدهد که چگونه میتوان با حداقل تغییرات، از قابلیتهای پلتفرم جدید بهرهمند شد.
نتیجهگیری
پلتفرم تست مایکروسافت با ارائه سرعت بالاتر، انعطافپذیری بیشتر و پشتیبانی از فناوریهای مدرن داتنت، گامی مهم در جهت بهبود تجربه آزموننویسی توسعهدهندگان است. ادغام بومی این پلتفرم در دستور dotnet test در داتنت 10، فرآیند مهاجرت را برای تیمها سادهتر کرده و امکان استفاده از آن را در پروژههای کوچک و بزرگ فراهم میکند. با تنظیمات سادهای مانند افزودن فایل dotnet.config و بهروزرسانی فایلهای پروژه، توسعهدهندگان میتوانند از مزایای این ابزار بهرهمند شوند بدون اینکه نیاز به بازنویسی فرآیندهای موجود داشته باشند. برای توسعهدهندگانی که به دنبال بهینهسازی فرآیند آزموننویسی خود هستند، Microsoft.Testing.Platform گزینهای قدرتمند و آیندهمحور است. با ادامه توسعه داتنت و انتشار نسخههای جدید، انتظار میرود که این پلتفرم قابلیتهای بیشتری ارائه دهد و به استانداردی در اکوسیستم داتنت تبدیل شود.