Fondamentalement, j'ai été la programmation pendant un petit moment et après avoir terminé mon dernier projet peut pleinement comprendre combien il aurait été plus facile si j'avais fait TDD. Je suppose que je ne le fais pas encore strictement car j'écris toujours du code puis j'écris un test, je ne comprends pas vraiment comment le test devient avant le code si vous ne savez pas quelles structures et comment vos données de stockage etc. ... mais de toute façon ...Tests unitaires - Est-ce que je le fais bien?
Un peu difficile à expliquer, mais disons par exemple que j'ai un objet Fruit avec des propriétés comme id, color et cost. (Tous les fichiers stockés dans le fichier texte ignorent complètement toute logique de base de données, etc.)
FruitID FruitName FruitColor FruitCost
1 Apple Red 1.2
2 Apple Green 1.4
3 Apple HalfHalf 1.5
Ceci est juste un exemple. Mais disons que j'ai ceci est une collection de Fruit
(c'est un List<Fruit>
) objets dans cette structure. Et ma logique dira de réorganiser les fruits dans la collection si un fruit est supprimé (c'est juste comme ça que la solution doit être).
E.g. si 1 est supprimé, l'objet 2 prend le fruit id 1, l'objet 3 prend le fruit id2.
Maintenant, je veux tester le code écrit ive qui fait la remise en ordre, etc.
Comment puis-je configurer cela pour faire le test?
Voici où j'ai jusqu'à présent. Fondamentalement, j'ai classe fruitManager avec toutes les méthodes, comme deletefruit, etc. Il a la liste habituellement mais j'ai changé sa méthode pour le tester afin qu'il accepte une liste, et l'information sur le fruit à supprimer, puis retourne la liste.
Test de l'unité sage: Est-ce que je fais cela fondamentalement de la bonne manière, ou est-ce que je me suis trompé d'idée? puis je teste la suppression de différents objets/ensembles de données valorisés pour garantir le bon fonctionnement de la méthode.
[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;
}
Je ne voudrais pas réaffecter des IDs si j'étais – UpTheCreek
pour l'amour de cette question, ou disons que le champ de valeur se met à jour quand un fruit est supprimé par exemple ... quelque chose comme ça – baron
Dans CreateFruitList(), j'obtiendrais débarrassez-vous des variables fXX et ajoutez simplement de nouveaux Fruits directement à la liste ('fruitList.add (nouveau Fruit (...))'). Juste un petit problème. –