Básicamente he estado programando por un tiempo y después de terminar mi último proyecto puedo entender completamente cuánto más fácil hubiera sido si hubiera hecho TDD. Supongo que todavía no lo hago estrictamente, ya que todavía estoy escribiendo código y luego estoy escribiendo una prueba, no entiendo cómo se hace la prueba antes del código si no sabes qué estructuras y cómo almacenar tus datos, etc. ... pero de todos modos ...Pruebas unitarias: ¿Lo estoy haciendo bien?
Un poco difícil de explicar, pero básicamente digamos, por ejemplo, tengo un objeto de fruta con propiedades como id, color y costo. (Todo el archivo de texto almacenado en ignoran completamente cualquier lógica de la base de datos, etc.)
FruitID FruitName FruitColor FruitCost
1 Apple Red 1.2
2 Apple Green 1.4
3 Apple HalfHalf 1.5
Todo esto es sólo por ejemplo. Pero digamos que tengo esto es una colección de objetos Fruit
(es un List<Fruit>
) en esta estructura. Y mi lógica indicará reordenar los frutos de la colección si se elimina una fruta (así es como debe ser la solución).
E.g. si se elimina 1, el objeto 2 toma la identificación de fruta 1, el objeto 3 toma la fruta id2.
Ahora quiero probar el código que he escrito, que hace el reordenamiento, etc
¿Cómo puedo configurar esto para hacer la prueba?
Aquí es donde he llegado hasta ahora. Básicamente tengo la clase fruitManager con todos los métodos, como deletefruit, etc. Tiene la lista generalmente pero he cambiado el método para probarlo para que acepte una lista, y la información sobre la fruta para eliminar, luego devuelve la lista.
Pruebas unitarias sabio: ¿Básicamente estoy haciendo esto de la manera correcta, o tengo una idea equivocada? y luego pruebo eliminar diferentes objetos/conjuntos de datos valorados para garantizar que el método esté funcionando correctamente.
[Test]
public void DeleteFruit()
{
var fruitList = CreateFruitList();
var fm = new FruitManager();
var resultList = fm.DeleteFruitTest("Apple", 2, fruitList);
//Assert that fruitobject with x properties is not in list ? how
}
private static List<Fruit> CreateFruitList()
{
//Build test data
var f01 = new Fruit {Name = "Apple",Id = 1, etc...};
var f02 = new Fruit {Name = "Apple",Id = 2, etc...};
var f03 = new Fruit {Name = "Apple",Id = 3, etc...};
var fruitList = new List<Fruit> {f01, f02, f03};
return fruitList;
}
No volvería a asignar identificaciones si fuera usted – UpTheCreek
por el bien de esta pregunta, o diga tal vez el campo de valor se actualiza cuando se elimina una fruta, por ejemplo ... algo así – baron
En CreateFruitList(), obtendría deshacerse de las variables fXX y simplemente agregar nuevas Frutas directamente a la lista ('fruitList.add (new Fruit (...))'). Sólo una pequeña objeción. –