Moderator Catatan: Sudah ada 39 jawaban yang diposting di sini (beberapa telah dihapus). Sebelum Anda memposting jawaban Anda , pertimbangkan apakah Anda dapat menambahkan sesuatu yang bermakna atau tidak untuk diskusi. Kemungkinan besar Anda hanya mengulangi apa yang sudah dikatakan orang lain.
Saya kadang-kadang menemukan diri saya perlu membuat metode pribadi di depan umum hanya untuk menulis beberapa tes unit untuk itu.
Biasanya ini terjadi karena metode ini berisi logika yang dibagi antara metode lain di kelas dan itu lebih rapi untuk menguji logika sendiri, atau alasan lain dapat dimungkinkan karena saya ingin menguji logika yang digunakan dalam utas sinkron tanpa harus khawatir tentang masalah threading .
Apakah orang lain mendapati diri mereka melakukan ini, karena saya tidak begitu suka melakukannya ?? Saya pribadi berpikir bonus lebih besar daripada masalah membuat metode publik yang tidak benar-benar menyediakan layanan di luar kelas ...
MEMPERBARUI
Terima kasih atas jawaban semua orang, tampaknya telah menarik minat masyarakat. Saya pikir konsensus umum pengujian harus terjadi melalui API publik karena ini adalah satu-satunya cara kelas akan pernah digunakan, dan saya setuju dengan ini. Beberapa kasus yang saya sebutkan di atas di mana saya akan melakukan ini di atas adalah kasus yang tidak biasa dan saya pikir manfaat melakukan itu sepadan.
Namun saya bisa, melihat setiap titik bahwa itu seharusnya tidak pernah benar-benar terjadi. Dan ketika memikirkannya sedikit lagi saya pikir mengubah kode Anda untuk mengakomodasi tes adalah ide yang buruk - setelah semua saya kira pengujian adalah alat pendukung dengan cara dan mengubah sistem untuk 'mendukung alat pendukung' jika Anda mau, adalah terang-terangan latihan yang buruk.
@VisibileForTesting
anotasi untuk membuat metode seperti itu - saya sarankan Anda melakukan ini sehingga alasan metode ini tidak private
didokumentasikan dengan baik.