test verileri oluşturmak için, Oluşturucu desen aşağıdaki türevi kullanın (basitleştirilmiş bir örnek!):Başka bir sınıfa dayalı kod nasıl oluşturulur?
Numune sınıfı:
public class Person
{
public string Name { get; set; }
public string Country { get; set; }
}
oluşturucu:
public class PersonBuilder
{
private string name;
private string country;
public PersonBuilder()
{
SetDefaultValues();
}
private void SetDefaultValues()
{
name = "TODO";
country = "TODO";
}
public Person Build()
{
return new Person
{
Name = name,
Country = country
};
}
public PersonBuilder WithName(string name)
{
this.name = name;
return this;
}
public PersonBuilder WithCountry(string country)
{
this.country = country;
return this;
}
}
NOT: Örneğin kendi içeriği uygun değildir. Burada önemli olan, örnekte, PersonBuilder gibi bir kurucu sınıfın, varlık sınıfına (Kişi) bakarak ve aynı modeli uygulayarak tamamen nasıl oluşturulabileceğidir - aşağıya bakınız.
Şimdi, kişi sınıfının 2 yerine 15 mülk olduğunu düşünün. Kurucu sınıfı uygulamak için bazı maymun işçiliği alırken, teorik olarak, Kişi sınıfından otomatik olarak üretilebilir. Oluşturucu sınıfını hızlı bir şekilde kurmak için kod oluşturmayı kullanabilir ve gerekirse daha sonra özel kod ekleyebiliriz.
Kod oluşturma işlemi bağlamdan haberdar olmalıdır (kişinin sınıfının adı ve özellikleri), bu nedenle basit metin tabanlı kod oluşturma veya normal ifade sihirleri burada tam olarak hissetmez. Dinamik, metin tabanlı olmayan ve görsel stüdyondan hızlı bir şekilde tetiklenebilen bir çözüm tercih edilir.
Böyle bir senaryo için kod oluşturma işlemini gerçekleştirmenin en iyi yolunu arıyorum. Yansıma? Codesmith? T4 şablonları? Makrolar ile canlı şablonlar yeniden paylaşın mı?
Ben bazı büyük yanıtlar :)
Ünite testlerimizde çokça alaylı bir şekilde kullanıyoruz, ancak bunun için alay kullanmamayı hiç düşünmemiştim :). Bu problemi çözmek için harika bir yol olacağını düşünüyorum, ama sadece testlerden daha geniş bir kapsamı olan genel soru değil. Ama yine de bu cevap için çok teşekkürler! –