2009-09-11 15 views
8

, farklı özelliklerine bazı özelliklere sahip bir sınıf oluşturmak, uygun rastgele verilerle özellikleri ayarlamak olacak ... Burada sahte kodda diğerine bu sınıf geçmek geçerli:Sınıf özelliklerini rastgele verilerle dolduracak araçlar var mı? Ben yapmak istiyorum ne

public class Customer 
{ 
    [Attribute("FirstName")] 
    private string CustomerFirstName; 
    public {get;set} //etc 

    [Attribute("LastName")] 
    private string CustomerLastName; 
    public {get;set;} //etc 

    [Attribute("DateTime")] 
    private DateTime CustomerSignUpDate; 
    public DateTime {get;set;} //yadda 

    [Attribute("Phone")] 
    private string CustomerPhone; 
    public string {get;set;} //yadda 
} 

Ve o zaman bu

IList<Customer> CustomerList=ClassFillerOutClass(new Customer(),5); 

gibi yap Ve sonuç özelliklerine uygun 'rastgele' veri var 5 Müşteriler bir listesi olacaktır.

Eğer bu mevcut değilse ... Sanırım bir projeyi kendim yapmaya başlayabilirim ... Gerekirse tekerleği yeniden icat etmek istemiyorum.

DÜZENLEME: Bir parça unuttum. Bunu bir test aracı olarak kullanmayı düşünüyorum. Bu yüzden yukarıdaki örnekte, rastgele ama uygun değerlere sahip 5 müşterinin bir listesini hızlı bir şekilde oluşturabilirim. Ve sonra bunu benim kalıcılık yöntemine ilet ve kontrol edebileceğim bir şey var. TDD amaçlarım için her zaman elle doldurulmuş bir nesne oluşturmamaya çalışıyorum.

DÜZENLEME 2: Tamam, kendi başıma yuvarlamaya başladım ... Bu haftasonu Codeplex'te yayınlayacağım ve buraya bağlayacağım ... Açıkça yapılmayacak, ancak başka biri olacaksa bir başlangıç ​​olacak üzerinde çalışmak istiyor.

cevap

8

Tamam ... ben bir tane bulamadım .... bu yüzden kendi başıma karar verdim. Check out: Object Hydrator.

Proje şu anda hızlı bir başlangıç ​​... ama bence potansiyel var ... nasıl daha iyi hale getirileceği konusunda fikirleriniz varsa bana bildirin.

+1

Kendi cevabımı kabul etmek yanlış ... ama Object Hydrator şimdiye kadar oldukça iyi bir çözüm gibi görünüyor. – Webjedi

+1

Çok ilginç bir proje var. İç koleksiyoncuların/listelerin/dizilerin/sözlüklerin oluşturulmasını ve 'get' yalnızca erişimcilerle mülkleri idare ediyor musunuz? – julealgon

+0

İç listelerle değil, dizilerle veya sözlüklerle çalışabiliriz. Aslında sadece alıcıları denemedim. – Webjedi

0

Hedeflerinizi burada bilmiyorum, ancak bunu kod seviyesine yakın tutacağım. Bu yaklaşım sizin için çalışmayabilir, ama benim için geçmişte vardır.

Rastgele veri oluşturabilir ve veritabanınıza yerleştirebilirsiniz. Bunu yapan birkaç ticari, ucuz ürün var. Kullandığım, RedGate tarafından SQL Data Generator. (

new Customer() 
{ 
    CustomerFirstName = "Bob", 
    CustomerLastName = "Smith", 
    CustomerSignUpDate = DateTime.Parse("1/2/2009"), 
    Phone = "555-555-1212" 
}, 
new Customer() 
{ 
    CustomerFirstName = "Jane", 
    CustomerLastName = "Doe", 
    CustomerSignUpDate = DateTime.Parse("9/11/2009"), 
    Phone = "555-300-1334 
}, 

ve bir metin düzenleyicisi kullanarak aşağıdaki içine sar:

Table Customer 
FirstName | LastName | SignUpDate | Phone 
Bob   Smith  1/2/2009  555-555-1212 
Jane  Doe  9/11/2009 555-300-1334 
... 

içine: Elinizdeki bu veriler sayesinde

, sen sütunlu verileri dönüştürmek için SQL bazı metin manipülasyonlar yapabilir Ben ihtiyaçlarınızı biliyorum ve ihtiyacınız olup olmadığını yok, Yine

public class FakeCustomerRepository 
{ 
    private IList<Customer> m_Customers = new List<Customer>() 
       { 
        [insert SQL text transform here] 
       }; 

    public Customer Get(...) 
    { 
    return m_Customers.Find(...); 
    } 
} 

: Bu C# 3.0 sözdizimi) 'dir çalışma zamanında rastgele veri. Yukarıda açıklanan yaklaşım, çok fazla veriyi hızlı ve statik bir şekilde oluşturmak istiyorsanız yararlı olur.

+0

ben soruya eklendi ... yeterince açık değildi. – Webjedi

+0

Evet, üzgünüm ki, özelleştirilebilir bir runtime sınıf veri rastgeleleştiricisinin farkında değilim, ki bunun için soruyorsun. –

1

Günümüzde aynı zamanda NBuilder (nbuilder.org) da var.

Her iki projenin bağlantılı olup olmadığını bilmiyorum.

4

AutoFixture'u (http://autofixture.codeplex.com/) denedim ve benim için iyi çalıştı. Bir kod satırında çocukların derin hiyerarşisine sahip bir nesne üretebildim.

-1

Eğer C#

URL http://objecthydrator.codeplex.com/

Nesne Hydrator kullanmanızı ve

public Employee GetEmployee() 
{ 
    return new Hydrator<Employee>().GetSingle(); 
} 

public IList< Employee> GetEmployees() 
{ 
return new Hydrator<Employee>().GetList(100); 
} 

Anand gibi kullanabilirsiniz Daha

+5

Kabul edilen cevabı kontrol edin. Hiçbir şey bulamadıktan sonra ObjectHydrator yazdım. :) – Webjedi

0

benim karmaşık nesneler için çalışmaz önerilen nesne dolgu tümü .

Ben iç içe diziler diziler ile süper karmaşık iç içe nesneleri var ve bu benim için çalışıyor yarım yoludur. http://hydrator.codeplex.com/

Ben diziler hariç her şeyi doldurur.

İlgili konular