NetArchTest Kütüphanesi Kullanarak Architectural Policy'ler Tanımlama

NetArchTest kütüphanesi, .NET uygulamalarında mimari kuralları tanımlamak ve bu kuralların uygulanıp uygulanmadığını test etmek için kullanılan bir kütüphanedir. Bu tür bir kütüphane, büyük ölçekli projelerde tutarlı bir kod mimarisini korumak ve geliştiricilerin belirli kurallara uymasını sağlamak için oldukça kullanışlıdır. Örneğin sürekli olarak yeni birilerinin dahil olup geliştirme yaptığı bir projede bazı kuralların aşılmamasını engellemek istersiniz ve bunu denetlemeniz gerekir mesela projedeki namespace ler şu şekilde olmalı veya projedeki public method lar şu formata uymalı gibi.

1- Kütüphanenin Kurulumu:

NetArchTest.Standard NuGet paketini projenize ekleyerek başlayabilirsiniz.

dotnet add package NetArchTest.Standard

2- Kod Mimarisi Kurallarını Tanımlama:

Önce, belirli kuralları tanımlamanız gerekmektedir. Örneğin, bir sınıfın belirli bir isme sahip olması veya bir namespace'in belirli bir başlangıçla başlaması gibi kurallar olabilir.

using NetArchTest.Rules;
using NetArchTest.Rules.Matches;
using NetArchTest.SampleLibrary;

public class ArchitectureTests
{
    [Fact]
    public void ClassesShouldHaveCorrectNamespace()
    {
        var result = Types.InAssembly(typeof(MyClass).Assembly)
            .That()
            .ResideInNamespace("NetArchTest.SampleLibrary");

        Assert.True(result.HasNoViolations());
    }
}

Bu örnekte, MyClass ve diğer tüm sınıfların NetArchTest.SampleLibrary namespace'inde bulunması gerektiğini kontrol ediyoruz.
Testinizi çalıştırabilirsiniz. Test, belirttiğiniz kurallara uyan veya uymayan sınıfları kontrol edecektir.

dotnet test

Bu, temel bir örnektir ve NetArchTest kütüphanesi daha karmaşık kuralları ve test senaryolarını destekler. Kuralları tanımlama ve test etme süreci, projenizin belirli gereksinimlerine göre özelleştirilebilir. Bu sayede, kodunuzdaki tutarsızlıkları ve uyumsuzlukları tespit edebilir ve büyük ölçekli projelerde tutarlı bir kod mimarisini koruyabilirsiniz.

Örn public metotların büyük harf ile başlaması gerektiğini kontrol eden bir rule tanımı yapalım. NetArchTest.Rules.NamingConventions isimli bir alan içinde bu tür kuralları tanımlar. İlgili kütüphaneyi kurduktan sonra, aşağıdaki gibi bir örnek kod bloğu kullanarak, public metotların büyük harf ile başlaması kuralını kontrol edebilirsiniz:

using NetArchTest.Rules;
using NetArchTest.Rules.NamingConventions;
using NetArchTest.SampleLibrary;
using Xunit;

public class NamingConventionTests
{
    [Fact]
    public void PublicMethodsShouldBePascalCase()
    {
        var result = Types.InAssembly(typeof(MyClass).Assembly)
            .That()
            .HaveNameMatching("PublicMethodsShouldBePascalCase*")
            .And()
            .HaveNameMatching("*.PublicMethodsShouldBePascalCase*")
            .Should()
            .HaveMethodNamesMatching(PublicMethodNames.PascalCase);

        Assert.True(result.HasNoViolations());
    }
}

Bu örnekte, HaveMethodNamesMatching metodu kullanılarak public metodların isimlerinin belirli bir kuralla uyup uymadığı kontrol edilmektedir. PublicMethodNames.PascalCase ifadesi, metot isimlerinin Pascal case (büyük harf ile başlayan her kelimenin ilk harfinin büyük olması) ile eşleşmesini sağlar.
Unutmayın ki bu örnek, projenizin gereksinimlerine göre özelleştirilebilir. Kuralları değiştirmek veya yeni kurallar eklemek için NetArchTest belgelendirmelerine başvurabilirsiniz.

 

Add comment