SORU
16 Aralık 2010, PERŞEMBE


Programcılar, "bir arabirim bir nesne değil karşı Kod.&söylediklerinde ne demek quot;?

Çok uzun ve zorlu arayış öğrenmeye başladımuygulayınBenim iş akışı için TDD. TDD çok iyi IoC ilkelerine uyan etki altındayım.

Burada TDD etiketli soruların bazıları ÇOK göz attıktan sonra, iyi bir fikir arayüzleri, nesneleri değil karşı program için olduğunu okudum.

Bu gerçek kullanım durumlarda bunu uygulamak için ne kadar basit kod örnekleri verebilir misiniz? Basit örnekler bana (ve diğer insanların öğrenmek isteyen) kavramları kavramak için bir anahtardır.

Çok teşekkür ederim.

CEVAP
16 Aralık 2010, PERŞEMBE


Düşünün:

class MyClass
{
    //Implementation
    public void Foo() {}
}

class SomethingYouWantToTest
{
    public bool MyMethod(MyClass c)
    {
        //Code you want to test
        c.Foo();
    }
}

MyMethod yalnızca sahte bir nesne ile MyClass değiştirmek istiyorsanız MyClass, birim test için bir kabul çünkü, yapamazsın. Daha iyi bir arayüz kullanımı

interface IMyClass
{
    void Foo();
}

class MyClass : IMyClass
{
    //Implementation
    public void Foo() {}
}

class SomethingYouWantToTest
{
    public bool MyMethod(IMyClass c)
    {
        //Code you want to test
        c.Foo();
    }
}

Şimdi kullandığından MyMethod test edebilirsiniz sadece bir arayüz, belirli somut bir uygulama değil. Alabilirsin arayüzü ve miras onu oluşturmak için her türlü sahte veya sahte istediğin, ya da kullanabilirsiniz, herhangi bir prefabrik alay kütüphaneler, gibi Rhino.Mocks.MockRepository.StrictMock<T>(), alabilir arayüzü ve inşa bir mock nesne üzerinde uçmak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunliu

    bunliu

    2 Mayıs 2007
  • Monica Catral

    Monica Catra

    12 NİSAN 2009
  • ThePointblank

    ThePointblan

    18 Aralık 2006