Perché gli attributi dei test unitari richiedono solitamente metodi pubblici?

12

Recentemente ho notato che l'aggiunta di [TestInitialize] a un metodo protetto in un assembly .NET non è stata rispettata, ma se ho reso pubblico il metodo è stato chiamato dal unit test runner (Resharper in questo caso). L'ho notato diverse volte in passato con i metodi di test.

Tecnicamente parlando, è altrettanto facile riflettere su un metodo privato come metodo pubblico. In effetti, la riflessione è un metodo utilizzato per testare i metodi privati.

Quindi perché devo rendere pubblici tutti i miei metodi di test delle unità?

    
posta Justin Dearing 11.08.2015 - 16:23
fonte

2 risposte

2

Dovresti testare ciò che la classe fa , non come lo fa.

Per quanto riguarda il "mondo esterno", questo è quello che la classe rende disponibile pubblicamente; la tua struttura di test sta facendo la stessa ipotesi.

Testando qualsiasi cosa "meno" di Pubblico, stai esplorando l'implementazione interna della classe, che è una cattiva idea.

    
risposta data 29.06.2018 - 12:17
fonte
0

Come regola generale, è meglio accedere solo ai metodi pubblici: quando crei una classe, crei anche il contratto su quali altre classi dovrebbero accedere al tuo codice. Quindi la risposta è molto probabilmente solo perché è una convenzione.

    
risposta data 09.03.2018 - 11:10
fonte

Leggi altre domande sui tag