SORU
3 ŞUBAT 2012, Cuma


Birim C özel yöntemler test#

Visual Studio otomatik olarak oluşturulan bir erişimci sınıfı) özel yöntemler test ünitesi sağlar. Başarıyla derler ki, özel bir yöntem, bir test yazdım, ama çalışma zamanında başarısız olur. Kodu ve test oldukça minimal bir sürüm değil

//in project MyProj
class TypeA
{
    private List<TypeB> myList = new List<TypeB>();

    private class TypeB
    {
        public TypeB()
        {
        }
    }

    public TypeA()
    {
    }

    private void MyFunc()
    {
        //processing of myList that changes state of instance
    }
}    

//in project TestMyProj           
public void MyFuncTest()
{
    TypeA_Accessor target = new TypeA_Accessor();
    //following line is the one that throws exception
    target.myList.Add(new TypeA_Accessor.TypeB());
    target.MyFunc();

    //check changed state of target
}

Çalışma zamanı hatası:

Object of type System.Collections.Generic.List`1[MyProj.TypeA.TypeA_Accessor TypeB]' cannot be converted to type 'System.Collections.Generic.List`1[MyProj.TypeA.TypeA TypeB]'.

Intellisense - ve dolayısıyla derleyici sanırım hedefe göre tip TypeA_Accessor. Ama çalışma zamanında tür Suba, dolayısıyla " listesine ekleme başarısız.

Bu hata durdurmak için herhangi bir yolu var mı? Ya da diğer tavsiye diğer insanların ne düşündüğünü daha var (belki de ben tahmin "özel yöntemler test etme" ve "birim testleri nesnelerin durumunu değiştirmek zorunda değilsiniz"). belki de

CEVAP
3 ŞUBAT 2012, Cuma


Evet, özel yöntemler Test etme.... Bir birim test fikri tamamen kamu tarafından birim test''. API

Eğer bulmak gerekir test etmek için çok özel bir davranış, büyük olasılıkla yeni bir 'sınıf' içinde saklanıyor sınıf olduğunuzu sınıyor, özü ve test ederek ortak arabirim.

Düşünce / tavsiye....bir araç. Yöntem özel hiç bir fikrim yok. Tüm yöntemleri bir nesnenin ortak bir arayüz üzerinde yaşamak gerekir anlamı.... eğer özel yapmak için ihtiyacınız varsa, büyük olasılıkla başka bir nesne üzerinde yaşıyor.

Tavsiye bu parça çok ama çoğunlukla onun iyi tavsiye pratikte işe yaramaz ve genellikle insanlar küçük nesneleri içine nesneleri ayrıştırmak için itecektir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Karan Thakur

    Karan Thakur

    23 HAZİRAN 2010
  • Stevie

    Stevie

    2 Mayıs 2010
  • warningthepeople

    warningthepe

    21 EYLÜL 2011