در این مقاله، گérald Barré روشهای مختلفی را برای تست تولیدکنندههای منبع Roslyn معرفی میکند. تست این تولیدکنندهها برای اطمینان از عملکرد صحیح آنها ضروری است. دو رویکرد اصلی برای تست وجود دارد: مقایسه کد تولید شده با خروجی مورد انتظار (مانند تستهای snapshot) و اطمینان از عملکرد صحیح کد تولید شده پس از اجرا.
نویسنده توصیه میکند که رویکرد دوم را به دلیل اطمینان بیشتر از صحت عملکرد کد تولید شده، ترجیح دهید. در این روش، کد تولید شده کامپایل شده و سپس اجرا میشود تا از صحت عملکرد آن اطمینان حاصل شود. این رویکرد مشابه تست آنالایزرهای Roslyn است و جزئیات بیشتری در مورد آن را میتوان در مقالهی قبلی نویسنده یافت.
یکی از روشهای تست خروجی تولیدکنندههای منبع، استفاده از کلاس CSharpSourceGeneratorTest است. این کلاس امکان تعریف کد تست و مقایسه آن با کد تولید شده را فراهم میکند. با این حال، این روش تنها بررسی میکند که آیا کد تولید شده مطابق انتظار است یا خیر و عملکرد آن را تست نمیکند. همچنین، این روش به جزئیات پیادهسازی وابسته است و تغییر در روش تولید کد میتواند باعث شکست تست شود، حتی اگر عملکرد کلی کد تغییر نکند.
برای تست عملکرد کد تولید شده، میتوان از کلاس CSharpSourceGeneratorTest استفاده کرد و آن را با استفاده از reflection گسترش داد. این روش به شما امکان میدهد کد تولید شده را کامپایل کرده و اجرا کنید و سپس رفتار آن را بررسی کنید. استفاده از AssemblyLoadContext جداگانه برای هر تست، امکان بارگیری وابستگیهای مختلف و جلوگیری از تداخل بین تستها را فراهم میکند.
مشاهده مطلب اصلی