donc j'ai quelque chose le long des lignes de ceComment tester une méthode publique que l'accès d'un membre privé
private List<ConcurrentQueue<int>> listOfQueues = new List<ConcurrentQueue<int>>()
public void InsertInt(int id, int value)
{
listOfQueues[id].Enqueue(value);
}
Est-ce quelque chose que je ne devrais pas être tests unitaires?
Si c'est comment puis-je tester la méthode InsertInt sans utiliser d'autres méthodes? est-il correct d'utiliser la méthode pour récupérer les données de la file d'attente pour tester si le il était entré correctement? Est-ce que c'est quelque chose que je devrais utiliser pour les mocks?
Donc c'est mieux pour tester plusieurs choses dans un test unitaire, que de lier le test unitaire à une implémentation? – scott
Oui, je le crois parce qu'il imite exactement comment cette classe sera utilisée dans des scénarios d'utilisation réels. Si vous testez les deux méthodes indépendamment, vous n'avez pas de test unitaire qui vérifie que les méthodes d'entrée et de sortie fonctionnent réellement ensemble, c'est juste une hypothèse. Vous pouvez alors changer l'implémentation (et le test) d'un et pendant que vos tests unitaires passeront mais que le code échouera en production. Vous avez encore besoin d'un test unitaire que si vous appelez la méthode d'entrée avec des paramètres x, votre sortie vous donne les paramètres y, donc les tests privés ont été une perte de temps et d'efforts. – KallDrexx
En outre, il s'agit toujours de tests unitaires car votre test unitaire ne traite que de la classe elle-même et ne sort pas de la classe, donc gérer plusieurs méthodes n'est pas une mauvaise chose. – KallDrexx