Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
Programlama

Unity Test Runner: Kodunuzu Güvenle Doğrulayın

Paylaşan: Unity Eğitim 06 January 2026 8 dakika okuma 100 görüntülenme

Modern oyun geliştirme süreçlerinde, yazılım kalitesi ve güvenilirliği her zamankinden daha kritik bir öneme sahiptir. Özellikle Unity gibi karmaşık ve büyük projelerin geliştirildiği platformlarda, kodun doğru çalıştığından emin olmak, hem geliştirme süresini kısaltır hem de son kullanıcı deneyimini iyileştirir. İşte tam bu noktada, Unity Test Runner devreye girerek kodunuzu sistematik bir şekilde doğrulamanıza olanak tanır. Bu makale, Unity Test Runner'ın ne olduğunu, neden bu kadar önemli olduğunu ve onu projelerinizde nasıl etkin bir şekilde kullanabileceğinizi adım adım açıklayacaktır.

Unity Test Runner Nedir ve Neden Kullanmalıyız?

Unity Test Runner, Unity'nin kendi içerisinde yer alan, geliştiricilerin kodlarını test etmelerini sağlayan entegre bir test otomasyon aracıdır. C# tabanlı unit testler (birim testleri) ve entegrasyon testleri yazmanıza olanak tanır. Birim testleri, kodun en küçük parçalarını (genellikle tek bir metot veya sınıf) izole ederek doğru çalışıp çalışmadıklarını kontrol eder. Bu sayede, büyük bir sistemdeki olası hataları erken aşamada tespit edebilir, kodunuzu daha sağlam ve sürdürülebilir hale getirebilirsiniz.

Peki, neden Unity Test Runner kullanmalıyız? İşte başlıca nedenler:

  • Hata Tespiti ve Azaltma: Testler, kodunuzdaki hataları daha ortaya çıkmadan, yani son kullanıcıya ulaşmadan önce yakalamanıza yardımcı olur. Bu, geliştirme maliyetlerini düşürür ve oyununuzun veya uygulamanızın kalitesini artırır.
  • Güvenli Refactoring: Mevcut kodu değiştirmek veya optimize etmek (refactoring) genellikle riskli bir süreçtir. Testleriniz varsa, yaptığınız değişikliklerin mevcut işlevselliği bozmadığından emin olabilirsiniz.
  • Daha İyi Kod Tasarımı: Test yazma süreci, kodunuzu daha modüler, bağımsız ve test edilebilir bir yapıda tasarlamanızı teşvik eder. Bu da genel kod kalitesini artırır.
  • Dokümantasyon: İyi yazılmış testler, kodunuzun ne yapması gerektiğini açıklayan canlı bir dokümantasyon görevi görür. Yeni ekip üyeleri için kod tabanını anlamayı kolaylaştırır.
  • Sürekli Entegrasyon (CI) Desteği: Test Runner, CI sistemleriyle kolayca entegre olabilir. Bu sayede her kod değişikliğinde otomatik testler çalıştırılabilir ve potansiyel sorunlar anında fark edilebilir.

Test Ortamını Hazırlama: Adım Adım Kurulum

Unity Test Runner'ı kullanmaya başlamak oldukça basittir. İşte yapmanız gerekenler:

1. Test Runner Paketini Kurulumu

Unity Editörünüzde Window > General > Test Runner yolunu izleyerek Test Runner penceresini açın. Eğer paket yüklü değilse, pencerede Enable PlayMode Tests ve Enable EditMode Tests butonlarını göreceksiniz. Bu butonlara tıklayarak ilgili test modları için paketleri yükleyebilirsiniz. Genellikle her ikisini de yüklemek iyi bir pratiktir.

2. Test Assembly'leri Oluşturma

Testlerinizi, projenizin ana kodundan ayrı bir Assembly Definition (.asmdef) dosyası içinde tutmak iyi bir uygulamadır. Bu, test kodunuzun ana uygulamanızla birlikte derlenmesini engeller ve derleme sürelerini kısaltır.

  1. Proje pencerenizde, test dosyalarınızı saklamak istediğiniz bir klasör oluşturun (örneğin, Assets/Tests).
  2. Bu klasöre sağ tıklayın ve Create > Assembly Definition yolunu izleyerek yeni bir Assembly Definition dosyası oluşturun (örneğin, MyGame.Tests).
  3. Bu yeni .asmdef dosyasını seçin ve Inspector penceresinde Test Assemblies kutucuğunu işaretleyin. Bu, Unity'ye bu assembly'nin testler içerdiğini bildirir.
  4. Eğer testleriniz projenizin ana koduna referans veriyorsa (ki çoğu zaman verecektir), Assembly Definition References bölümüne ana kodunuzun Assembly Definition dosyasını (varsa) ekleyin veya Allow Unsafe Code gibi ayarları gerektiği gibi yapılandırın.

3. İlk Unit Test'inizi Yazma

Test ortamınızı hazırladıktan sonra, ilk testinizi yazmaya hazırsınız. Testlerinizi oluşturduğunuz Tests klasörüne kaydedin.

Örnek olarak, basit bir matematik sınıfı için bir test yazalım:

using NUnit.Framework;

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public int Subtract(int a, int b)
    {
        return a - b;
    }
}

public class CalculatorTests
{
    [Test]
    public void Add_TwoNumbers_ReturnsCorrectSum()
    {
        // Arrange
        Calculator calculator = new Calculator();
        int a = 5;
        int b = 3;

        // Act
        int result = calculator.Add(a, b);

        // Assert
        Assert.AreEqual(8, result, "Toplama işlemi doğru sonucu vermedi.");
    }

    [Test]
    public void Subtract_TwoNumbers_ReturnsCorrectDifference()
    {
        // Arrange
        Calculator calculator = new Calculator();
        int a = 10;
        int b = 4;

        // Act
        int result = calculator.Subtract(a, b);

        // Assert
        Assert.AreEqual(6, result, "Çıkarma işlemi doğru sonucu vermedi.");
    }
}

Bu örnekte:

  • NUnit.Framework, Unity Test Runner'ın kullandığı test çatısıdır.
  • [TestFixture] (isteğe bağlı, sınıf bazında) veya [Test] (metot bazında) nitelikleri, Unity'ye bu metotların bir test olduğunu bildirir.
  • Arrange (Hazırlık): Test edilecek nesneyi ve veriyi hazırlarız.
  • Act (Eylem): Test edilecek metodu çağırırız.
  • Assert (Doğrulama): Metodun beklenen sonucu verip vermediğini Assert sınıfının metotlarıyla kontrol ederiz (örneğin, Assert.AreEqual).

Play Mode ve Edit Mode Testleri Arasındaki Farklar

Unity Test Runner iki ana test modu sunar:

  • Edit Mode Tests (Editör Modu Testleri): Bu testler, Unity Editör'ü çalışırken ancak oyun oynatılmadan çalışır. Genellikle oyun mantığından bağımsız, saf C# sınıflarını (örneğin, hesaplama algoritmaları, veri yapıları) test etmek için kullanılır. Çok hızlı çalışırlar ve Unity'nin oyun döngüsü veya sahne nesneleriyle doğrudan etkileşime girmezler.
  • Play Mode Tests (Oyun Modu Testleri): Bu testler, oyun oynatılıyormuş gibi Unity çalışma zamanı ortamında çalışır. MonoBehaviour'lar, Coroutine'ler, fizik motoru, UI elemanları gibi Unity'ye özgü bileşenleri ve etkileşimleri test etmek için idealdir. Daha yavaş çalışırlar çünkü oyunun başlatılması ve durdurulması gerekir. [UnityTest] niteliği, coroutine tabanlı testler yazmanıza olanak tanır ve bu testlerin Play Mode'da çalışmasını sağlar.

Testleri Çalıştırma ve Sonuçları Değerlendirme

Testlerinizi yazdıktan sonra, Test Runner penceresine geri dönün. Burada yazmış olduğunuz testleri göreceksiniz. Run All butonuna tıklayarak tüm testleri çalıştırabilir veya belirli testleri seçip çalıştırabilirsiniz. Test sonuçları, Test Runner penceresinde yeşil (geçen testler) ve kırmızı (başarısız olan testler) göstergelerle birlikte detaylı bir şekilde listelenir. Başarısız olan testlerin hata mesajlarını ve yığın izlerini (stack trace) inceleyerek sorunun kaynağını bulabilirsiniz.

Gelişmiş Test Teknikleri ve En İyi Uygulamalar

Unity Test Runner ile daha verimli çalışmak için bazı gelişmiş teknikler ve en iyi uygulamalar şunlardır:

  • Test Driven Development (TDD): Önce testi yazın, testin başarısız olmasını sağlayın, kodu yazıp testi geçirin ve ardından kodu refactor edin. Bu döngü, daha temiz ve daha test edilebilir kod yazmanıza yardımcı olur.
  • Bağımlılık Enjeksiyonu ve Mocking: Test ettiğiniz bileşenin bağımlılıklarını (örneğin, bir veritabanı bağlantısı veya başka bir sınıf) gerçek uygulamadan ayırmak için bağımlılık enjeksiyonu kullanın. Daha sonra bu bağımlılıkları, Moq gibi kütüphanelerle sahte (mock) nesnelerle değiştirerek testlerinizi daha izole ve hızlı hale getirebilirsiniz.
  • Test Kapsamı (Test Coverage): Kodunuzun ne kadarının testler tarafından kapsandığını ölçmek için test kapsamı araçlarını kullanın. %100 kapsama her zaman mümkün veya pratik olmasa da, kritik kod yollarının test edildiğinden emin olmak önemlidir.
  • Küçük ve Odaklanmış Testler: Her testin yalnızca tek bir şeyi test ettiğinden emin olun. Testler hızlı çalışmalı, izole olmalı ve her zaman aynı sonucu vermelidir.
  • Parametreli Testler: Aynı testi farklı veri setleriyle çalıştırmak için [TestCase] niteliğini kullanabilirsiniz. Bu, benzer testleri tekrarlamaktan sizi kurtarır.

Sonuç

Unity Test Runner, Unity projelerinizde kod kalitesini artırmak, hataları erken tespit etmek ve geliştirme sürecinizi daha verimli hale getirmek için vazgeçilmez bir araçtır. Unit testler yazmak başlangıçta ek bir çaba gibi görünse de, uzun vadede projenizin sağlığı ve sürdürülebilirliği için büyük faydalar sağlar. Bu makaledeki adımları ve ipuçlarını takip ederek, siz de Unity projelerinizde güvenilir ve hatasız kod geliştirme yolculuğunuza başlayabilirsiniz. Unutmayın, iyi yazılmış testler, sadece bugları yakalamakla kalmaz, aynı zamanda daha iyi bir geliştirici olmanıza da yardımcı olur.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!