تكرار السؤال: …
الإجابة المختصرة
تكتب اختبارات وحدة تفحص التجميعات وتفرض القواعد المعمارية؛ كأن تمنع طبقة الـ Domain من الإشارة لطبقة الـ Infrastructure أو تفرض تسميات موحدة للمتحكمات.
الشرح
في الفرق الكبيرة، يسهل كسر قواعد المعمارية النظيفة (Clean Architecture) بالخطأ كأن يستورد مطور كود SQL داخل كيان الـ Domain. تقوم مكتبة NetArchTest بفحص شجرة الأنواع في الـ Assemblies برمجياً؛ فإذا قامت أي فئة في Domain بتوريث أو استيراد كلاس من Infrastructure، يفشل اختبار الـ CI فوراً ويمنع دمج الكود قبل وصوله للإنتاج.
مثال بالكود
[Fact]
public void Domain_Should_Not_DependOn_Infrastructure() {
var result = Types.InAssembly(typeof(DomainEntity).Assembly)
.ShouldNot()
.HaveDependencyOn("Infrastructure")
.GetResult();
Assert.True(result.IsSuccessful);
}أخطاء شائعة
- الاعتماد حصراً على مراجعة الكود اليدوية (Code Review) لاكتشاف انتهاكات المعمارية النظيفة بدلاً من أتمتتها.