Birim Testleri yazıyor ve IClonable
'u uygulayan türde bir senaryoyu düşünüyorum. Tabii ki Clone()
yöntemini sınayan bir Birim Testine sahip olmak istiyorum.Birim Testi: Klonlama ve eşitlik
[Test]
public void CloneObject()
{
MyType original = new MyType();
MyType clone = (MyType)original.Clone();
// Assert for equality
}
Yani benim ilk görev eşitlik için bir Assert
olması. Aşağıdaki seçeneklere bakın: MyType
tüm özellikleri (alanları) geçmekte
- ve iki örnekleri eşit olup olmadığını
MyType
diyelimMyType
bir - geçersiz kılma
Equals()
teker kontrol (testler için bazen eşitlik olduğunu düşünün üretim kodu için eşitlik) serileştirme çeşit - kontrol edin örnekleri (eşitse farklı kabul
MyType
[Serializable]
olması gerekir, ama bu bazen) mesela Arayüz Özellikler 'varsa yapmak zor olduğu senaryo için - ... ??
İlk iki için testlerimi kurabilirim ve iyi çalışıyorlar. Ama ne MyType
değiştirirseniz ve ek bir özellik eklerseniz? Clone()
bunu kopyalamaz ve ben işaretli özellikleri veya eşitleme yöntemi listesine eklemezseniz, özellik kopyalanmasa bile benim sınama hala geçer.
Bu tür testleri nasıl çözersiniz? karşılaştırma algoritması isteğe options
ile özelleştirilebilir
original.ShouldBeEquivalentTo(clone);
:
ikili serileştirme aynı sınırlamalara muzdarip olduğunu Json (de) seri hale düşünülen veya does var ('[Serializable]') görüşünüzde mi? –