Fondamentalmente sto programmando da un po 'e dopo aver finito il mio ultimo progetto posso capire quanto sarebbe stato più facile se avessi fatto TDD. Immagino che non lo sto ancora facendo rigorosamente, mentre sto ancora scrivendo il codice e poi scrivo un test per questo, non capisco come il test diventa prima del codice se non sai quali strutture e come i tuoi dati di archiviazione, ecc. ... ma comunque ...Test unitario - Sto facendo bene?
Tipo di difficile da spiegare, ma fondamentalmente consente di dire ad esempio che ho un oggetto Fruit con proprietà come id, colore e costo. (Tutti memorizzati in file di testo ignorano completamente qualsiasi logica di database, ecc.)
FruitID FruitName FruitColor FruitCost
1 Apple Red 1.2
2 Apple Green 1.4
3 Apple HalfHalf 1.5
Questo è solo per esempio. Ma diciamo che ho questa è una collezione di oggetti Fruit
(è un List<Fruit>
) in questa struttura. E la mia logica dirà di riordinare i frutti nella raccolta se un frutto viene eliminato (questo è proprio come deve essere la soluzione).
E.g. se 1 è cancellato, l'oggetto 2 prende la frutta id 1, l'oggetto 3 prende la frutta id2.
Ora voglio testare il codice ive scritta che fa il riordino, ecc
Come posso impostare questa funzione per fare il test?
Ecco dove sono arrivato finora. Fondamentalmente ho classe fruitManager con tutti i metodi, come deletefruit, ecc. Ha la lista di solito ma Ive ha cambiato il metodo hte per testarlo in modo che accetti un elenco e le informazioni sul frutto da eliminare, quindi restituisce l'elenco.
Test delle unità: Sto praticamente facendo questo nel modo giusto o ho un'idea sbagliata? e poi testando l'eliminazione di oggetti/set di dati con valori diversi per garantire che il metodo funzioni correttamente.
[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;
}
Non vorrei riassegnare gli ID se fossi in te – UpTheCreek
per amor di questa domanda, o dire che forse il campo del valore si aggiorna quando un frutto viene cancellato per esempio ... qualcosa del genere – baron
In CreateFruitList(), vorrei ottenere liberare le variabili fXX e aggiungere semplicemente nuovi frutti direttamente alla lista ('fruitList.add (new Fruit (...))'). Solo un piccolo cavillo. –