Saya baru-baru ini mencatat bahwa menambahkan [TestInitialize] ke metode yang dilindungi dalam perakitan .NET tidak dihormati, tetapi jika saya membuat metode publik itu dipanggil oleh unit test runner (Resharper dalam kasus ini). Saya telah memperhatikan ini beberapa kali di masa lalu dengan metode pengujian.
Secara teknis, mudah untuk merefleksikan metode pribadi sebagai metode publik. Faktanya, refleksi adalah metode yang digunakan untuk menguji metode pribadi.
Jadi mengapa saya harus membuat semua metode pengujian unit saya terbuka untuk umum?
.net
unit-testing
Justin Dearing
sumber
sumber
setAccessible
yang dapat diblokir oleh beberapa SecurityManager kustomJawaban:
Anda harus Uji apa kelas tidak , tidak bagaimana melakukannya.
Sejauh "Dunia Luar" yang bersangkutan, itulah yang disediakan oleh kelas untuk umum; kerangka kerja pengujian Anda membuat asumsi yang sama.
Dengan menguji sesuatu yang "kurang" daripada Publik, Anda mempelajari implementasi internal kelas, yang merupakan Ide Buruk.
sumber
Sebagai aturan umum, yang terbaik adalah hanya mengakses metode publik - saat Anda membuat kelas, Anda juga membuat kontrak untuk mana kelas lain harus mengakses kode Anda. Jadi jawabannya kemungkinan besar hanya karena itu adalah konvensi.
sumber