J'ai récemment noté que l'ajout de [TestInitialize] à une méthode protégée dans un assembly .NET n'était pas respecté, mais si je rendais la méthode publique, elle était appelée par le testeur unitaire (Resharper dans ce cas). J'ai remarqué cela plusieurs fois dans le passé avec des méthodes de test.
Techniquement parlant, il est tout aussi facile de réfléchir à une méthode privée qu'à une méthode publique. En fait, la réflexion est une méthode utilisée pour tester unitairement des méthodes privées.
Alors, pourquoi dois-je rendre publiques toutes mes méthodes de test unitaire?
.net
unit-testing
Justin Dearing
la source
la source
setAccessible
ce qui peut être bloqué par certains SecurityManager personnalisésRéponses:
Vous devez tester ce que la classe ne , pas comment elle le fait.
En ce qui concerne le "monde extérieur", c'est tout ce que la classe rend publiquement disponible; votre framework de test fait la même hypothèse.
En testant quelque chose de "moins" que Public, vous plongez dans l'implémentation interne de la classe, qui est une mauvaise idée.
la source
En règle générale, il est préférable d'accéder uniquement aux méthodes publiques - lorsque vous créez une classe, vous créez également le contrat indiquant quelles autres classes doivent accéder à votre code. Donc, la réponse est très probablement juste parce que c'est une convention.
la source