İzlenecek yol: Kullanımdan Oluştur özelliğiyle test öncelikli geliştirme

Bu konu başlığında, test öncelikli geliştirmeyi destekleyen Kullanımdan Oluştur özelliğinin nasıl kullanılacağı gösterilmektedir.

Test öncelikli geliştirme , ilk olarak ürün belirtimlerine göre birim testleri yazdığınız ve ardından testlerin başarılı olması için gereken kaynak kodunu yazdığınız yazılım tasarımına yönelik bir yaklaşımdır. Visual Studio, test çalışmalarınızda, tanımlanmadan önce kaynak kodunda yeni türler ve üyeler oluşturarak test öncelikli geliştirmeyi destekler.

Visual Studio, iş akışınızda en az kesintiyle yeni türleri ve üyeleri oluşturur. Geçerli konumunuzu kodda bırakmadan türler, yöntemler, özellikler, alanlar veya oluşturucular için saplamalar oluşturabilirsiniz. Tür oluşturma seçeneklerini belirtmek üzere bir iletişim kutusu açtığınızda, iletişim kutusu kapatıldığında odak hemen geçerli açık dosyaya döner.

Kullanımdan Oluştur özelliği, Visual Studio ile tümleşen test çerçeveleriyle kullanılabilir. Bu konuda, Microsoft Unit Testing Framework gösterilmiştir.

Not

Bilgisayarınız bu makaledeki Bazı Visual Studio kullanıcı arabirimi öğeleri için farklı adlar veya konumlar gösterebilir. Visual Studio'nun farklı bir sürümünü veya farklı ortam ayarlarını kullanıyor olabilirsiniz. Daha fazla bilgi için bkz . IDE'yi kişiselleştirme.

Windows Sınıf Kitaplığı projesi ve Test projesi oluşturma

  1. C# veya Visual Basic'te yeni bir Windows Sınıf Kitaplığı projesi oluşturun. GFUDemo_VB Kullandığınız dile bağlı olarak veya GFUDemo_CSolarak adlandırabilirsiniz.

  2. Çözüm Gezgini üstteki çözüm simgesine sağ tıklayın ve Yeni Proje Ekle'yi>seçin.

  3. Yeni bir Birim Testi Projesi (.NET Framework) projesi oluşturun.

Sınıf Kitaplığı projesine başvuru ekleme

  1. Çözüm Gezgini'da, birim testi projenizin altında Başvurular girdisine sağ tıklayın ve Başvuru Ekle'yi seçin.

  2. Başvuru Yöneticisi iletişim kutusunda Projeler'i ve ardından sınıf kitaplığı projesini seçin.

  3. Başvuru Yöneticisi iletişim kutusunu kapatmak için Tamam'ı seçin.

  4. Çözümünüzü kaydedin. Artık test yazmaya başlamaya hazırsınız.

Birim testinden yeni sınıf oluşturma

  1. Test projesi UnitTest1 adlı bir dosya içerir. Çözüm Gezgini'da bu dosyaya çift tıklayarak kod düzenleyicisinde açın. Bir test sınıfı ve test yöntemi oluşturuldu.

  2. sınıfı UnitTest1 için bildirimi bulun ve olarak yeniden adlandırın AutomobileTest.

    Not

    IntelliSense artık IntelliSense deyiminin tamamlanması için iki alternatif sunar: tamamlama modu ve öneri modu. Sınıfların ve üyelerin tanımlanmadan önce kullanıldığı durumlar için öneri modunu kullanın. IntelliSense penceresi açıkken, tamamlama modu ile öneri modu arasında geçiş yapmak için Ctrl+Alt+Ara Çubuğu'na basabilirsiniz. Daha fazla bilgi için bkz . IntelliSense kullanma. Öneri modu, sonraki adımda yazarken Automobile size yardımcı olur.

  3. TestMethod1() yöntemini bulun ve olarak yeniden adlandırınDefaultAutomobileIsInitializedCorrectly(). Bu yöntemin içinde, aşağıdaki ekran görüntülerinde gösterildiği gibi adlı Automobileyeni bir sınıf örneği oluşturun. Derleme zamanı hatasını gösteren dalgalı bir alt çizgi görüntülenir ve sol kenar boşluğunda veya üzerine geldiğinizde doğrudan dalgalı çizginin altında hızlı eylemler hatası ampulü görüntülenir.

    Visual Basic'te Hızlı Eylemler

    C'de Hızlı İşlemler#

  4. Hızlı İşlemler ampulü seçin veya tıklayın. Türün Automobile tanımlanmadığını belirten bir hata iletisi görürsünüz. Ayrıca bazı çözümler sunulur.

  5. Tür Oluştur iletişim kutusunu açmak için Yeni tür oluştur'a tıklayın. Bu iletişim kutusu, türü farklı bir projede oluşturmayı içeren seçenekler sağlar.

  6. Visual Studio'ya dosyayı test projesi yerine sınıf kitaplığı projesine eklemesini bildirmek için Proje listesinde GFUDemo_VB veya GFUDemo_CS'e tıklayın. Henüz seçili değilse Yeni dosya oluştur'u seçin ve Automobile.cs veya Automobile.vb olarak adlandırır.

    Yeni Tür Oluştur iletişim kutusu

  7. İletişim kutusunu kapatmak ve yeni dosyayı oluşturmak için Tamam'a tıklayın.

  8. Çözüm Gezgini'da, yeni Automobile.vb veya Automobile.cs dosyasının orada olduğunu doğrulamak için GFUDemo_VB veya GFUDemo_CS proje düğümünü arayın. Kod düzenleyicisinde odak hala içindedir AutomobileTest.DefaultAutomobileIsInitializedCorrectlyve bu sayede testinizi en az kesintiyle yazmaya devam edebilirsiniz.

Özellik saplama oluşturma

Ürün belirtiminin, sınıfın ve TopSpeedadlı Model iki genel özelliği olduğunu belirttiğini Automobile varsayalım. Bu özelliklerin ve varsayılan oluşturucusunun "Not specified"-1 varsayılan değerleriyle başlatılması gerekir. Aşağıdaki birim testi, varsayılan oluşturucunun özellikleri doğru varsayılan değerlerine ayarlandığını doğrular.

  1. Test yöntemine aşağıdaki kod DefaultAutomobileIsInitializedCorrectly satırını ekleyin.

    Assert.IsTrue((myAuto.Model == "Not specified") && (myAuto.TopSpeed == -1));
    
  2. Kod üzerinde Automobileiki tanımsız özelliğe başvuracağından ve TopSpeedaltında dalgalı bir alt çizgi görünürModel. Model Üzerine gelin ve Hızlı Eylemler hata ampulünü seçin, ardından 'Automobile.Model' özelliği oluştur'u seçin.

  3. Özelliği için TopSpeed aynı şekilde bir özellik saplaması oluşturun.

    Automobile sınıfında, yeni özelliklerin türleri bağlamdan doğru şekilde çıkarılır.

Yeni bir oluşturucu için saplama oluşturma

Şimdi ve TopSpeed özelliklerini başlatmak Model için bir oluşturucu saptaması oluşturacak bir test yöntemi oluşturacağız. Daha sonra testi tamamlamak için daha fazla kod ekleyeceksiniz.

  1. Sınıfınıza AutomobileTest aşağıdaki ek test yöntemini ekleyin.

    [TestMethod]
    public void AutomobileWithModelNameCanStart()
    {
        string model = "Contoso";
        int topSpeed = 199;
        Automobile myAuto = new Automobile(model, topSpeed);
    }
    
  2. Kırmızı dalgalı çizginin altındaki Hızlı İşlemler hata ampulü'ne tıklayın ve ardından 'Automobile' içinde oluşturucu oluştur'a tıklayın.

    Automobile Sınıf dosyasında, yeni oluşturucunun oluşturucu çağrısında kullanılan yerel değişkenlerin adlarını incelediğini, sınıfında aynı adlara sahip özellikleri bulduğuna Automobile ve ve özelliklerinde bağımsız değişken değerlerini depolamak için oluşturucu gövdesinde kod sağladığına ModelTopSpeed dikkat edin.

  3. Yeni oluşturucuyu oluşturduktan sonra, içindeki varsayılan oluşturucuya DefaultAutomobileIsInitializedCorrectlyyapılan çağrının altında dalgalı bir alt çizgi görüntülenir. Hata iletisi, sınıfın Automobile sıfır bağımsız değişken alan bir oluşturucuya sahip olmadığını belirtir. Parametreleri olmayan açık bir varsayılan oluşturucu oluşturmak için Hızlı Eylemler hata ampulü'ne ve ardından 'Automobile' içinde oluşturucu oluştur'a tıklayın.

Bir yöntem için saplama oluşturma

belirtiminin, ve TopSpeed özellikleri varsayılan değerlerden başka bir değere ayarlanmışsa Model yeni Automobile bir IsRunning duruma getirilebileceğini belirttiğini varsayalım.

  1. Yöntemine AutomobileWithModelNameCanStart aşağıdaki satırları ekleyin.

    myAuto.Start();
    Assert.IsTrue(myAuto.IsRunning == true);
    
  2. Yöntem çağrısı için Hızlı Eylemler hata ampulü'ne myAuto.Start ve ardından 'Automobile.Start' yöntemi oluştur'a tıklayın.

  3. Özelliğin Hızlı Eylemler ampulünü IsRunning tıklatın ve ardından 'Automobile.IsRunning' özelliğini oluştur'a tıklayın.

    sınıfı Automobile artık adlı bir yöntem ve adlı Start()IsRunningbir özellik içerir.

Testleri çalıştırma

  1. Test menüsünde Tüm Testleri Çalıştır'ı>seçin.

    Tüm Testleri Çalıştır>komutu, geçerli çözüm için yazılmış tüm test çerçevelerindeki tüm testleri çalıştırır. Bu durumda iki test vardır ve ikisi de beklendiği gibi başarısız olur. Koşul DefaultAutomobileIsInitializedCorrectly döndürdüğünden Assert.IsTrueFalsetest başarısız oluyor. AutomobileWithModelNameCanStart sınıfındaki StartAutomobile yöntemi bir özel durum oluşturacağından test başarısız olur.

    Test Sonuçları penceresi aşağıdaki çizimde gösterilmiştir.

    Başarısız olan test sonuçları

  2. Test Sonuçları penceresinde, her testin konumuna gitmek için her test sonucu satırına çift tıklayın.

Kaynak kodu uygulama

  1. Aşağıdaki kodu varsayılan oluşturucuya ekleyin; böylece, ve özelliklerinin tümü doğru varsayılan , ve False (veya false C# için) değerleriyle -1"Not specified"başlatılır.IsRunningTopSpeedModel

    public Automobile()
    {
        this.Model = "Not specified";
        this.TopSpeed = -1;
        this.IsRunning = true;
    }
    
  2. Start Yöntemi çağrıldığında, yalnızca veya TopSpeed özellikleri varsayılan değerlerinden başka bir değere ayarlanmışsa Model bayrağı true olarak ayarlamalıdırIsRunning. NotImplementedException yönteminin gövdesinden öğesini kaldırın ve aşağıdaki kodu ekleyin.

    public void Start()
    {
        if (this.Model != "Not specified" || this.TopSpeed != -1)
            this.IsRunning = true;
        else
            this.IsRunning = false;
    }
    

Testleri yeniden çalıştırma

  • Test menüsünde Çalıştır'ın üzerine gelin ve ardından Tüm Testler'e tıklayın.

    Bu kez testler geçer. Test Sonuçları penceresi aşağıdaki çizimde gösterilmiştir.

    Geçen test sonuçları