2009-09-11 10 views
8

Lo que me gustaría hacer es crear una clase con algunos atributos en diferentes propiedades, que pasan a otra clase que va a establecer las propiedades con datos aleatorios apropiada ... aquí en pseudo código:¿Hay alguna herramienta para completar las propiedades de clase con datos aleatorios?

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 
} 

Y entonces haga esto

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

Y el resultado sería una lista de 5 clientes que tienen datos 'aleatorios' apropiados en sus propiedades.

Si esto no existe ... Supongo que podría comenzar un proyecto yo mismo para hacer ... Simplemente no quiero reinventar la rueda si no es necesario.

EDIT: olvidé una pieza. Estoy buscando usar esto como una herramienta de prueba. Entonces, en el ejemplo anterior, pude crear rápidamente una lista de 5 clientes con valores aleatorios pero apropiados. Y luego diga eso a mi método de persistencia, y tenga algo con lo que pueda comparar. Estoy intentando evitar crear manualmente un objeto poblado cada vez para mis propósitos de TDD.

EDIT 2: Bueno, así que comencé a rodar la mía ... Lo publicaré en Codeplex este fin de semana y lo vincularé aquí ... Claramente no lo haré, pero será un comienzo si alguien más quiere trabajar en eso.

Respuesta

8

Ok ... así que nunca encontré una ... así que decidí comenzar la mía. Salida: Object Hydrator.

El proyecto es actualmente un pico rápido ... pero creo que tiene potencial ... hágamelo saber si tiene ideas de cómo hacerlo mejor.

+1

Se siente mal aceptar mi propia respuesta ... pero Object Hydrator parece ser una solución bastante buena hasta ahora. – Webjedi

+1

Proyecto muy interesante allí. ¿Maneja la creación de colecciones internas/listas/matrices/diccionarios, y propiedades con acceso 'solo'? – julealgon

+0

Podemos manejar listas internas, no matrices o diccionarios. No he probado getters solo en realidad. – Webjedi

0

No conozco sus objetivos aquí, pero lo mantendré cerca del nivel del código. Este enfoque puede no funcionar para usted, pero lo ha hecho en el pasado para mí.

Puede generar datos aleatorios y colocarlos en su base de datos. Hay algunos productos comerciales a costo que hacen esto. El que uso es SQL Data Generator de RedGate.

Con estos datos en la mano, puede hacer algunas manipulaciones de texto en SQL para convertir los datos en columnas:

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

En:

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 
}, 

y envolver esto en la siguiente con un editor de texto (esto es la sintaxis de C# 3.0):

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

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

De nuevo, no sé sus necesidades y si necesita datos aleatorios en tiempo de ejecución. El enfoque descrito anteriormente solo es útil si desea generar una gran cantidad de datos de forma rápida y estática.

+0

No era lo suficientemente claro ... Agregué a la pregunta. – Webjedi

+0

Bueno, lamento decir que no conozco un aleatorizador de datos de clase de tiempo de ejecución personalizable, que es lo que siento que está pidiendo. –

1

Hoy en día también tiene NBuilder (nbuilder.org) que hace lo mismo.

No sé si ambos proyectos están vinculados.

4

Intenté AutoFixture (http://autofixture.codeplex.com/) y funcionó bien para mí. Pude generar un objeto con una jerarquía profunda de niños en una línea de código.

-1

puede utilizar Hidratante de objetos en C#

URL http://objecthydrator.codeplex.com/

y utilizar como

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

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

Anand Más

+5

Echa un vistazo a la respuesta aceptada. Escribí ObjectHydrator después de no encontrar nada. :) – Webjedi

0

Todos los materiales de relleno de objetos sugeridos no funcionan para mis objetos complejos .

Tengo objetos anidados súper complejos con matrices con matrices anidadas y esto está a medio camino de trabajar para mí. http://hydrator.codeplex.com/

Lleno todo menos los arreglos.

Cuestiones relacionadas