En c++, j'ai souvent fait un test de l'unité de la classe, un ami de la classe, je suis en train de tester. Je le fais parce que parfois, je ressens le besoin d'écrire un test unitaire pour une méthode privée, ou peut-être que je veux avoir accès à certains membre privé afin que je puisse plus facilement d'installation de l'état de l'objet, afin que je puisse le tester. Pour moi, cette aide en preservant l'encapsulation et d'abstraction, parce que je ne suis pas la modification du public ou protégé de l'interface de la classe.
Si j'achète une bibliothèque tierce, je ne voudrais pas que c'est l'interface publique d'être pollué avec un tas de méthodes publiques je n'ai pas besoin de savoir à propos de tout simplement parce que le vendeur voulait unité de test!
Je ne veux avoir à se soucier d'un tas de membres que je n'ai pas besoin de savoir si j'hérite d'une classe.
C'est pourquoi je dis qu'il préserve l'abstraction et d'encapsulation.
À mon nouveau travail, ils froncent les sourcils à l'encontre de l'aide de l'ami des classes de même pour les tests unitaires. Ils disent que, parce que la classe ne devrait pas "savoir" quoi que ce soit sur les tests et que vous ne voulez pas que le couplage de la classe et de son test.
Quelqu'un peut-il expliquer ces raisons, pour moi, plus afin que je puisse mieux comprendre? Je ne vois pas pourquoi à l'aide d'un ami pour les tests unitaires est mauvais.