Coba jelasin Pemisahan antarmuka dari pelaksanaan dari Pengujian unit dong

Karena beberapa kelas dapat memiliki referensi ke kelas-kelas lain, pengujian suatu kelas kerap kali berdampak ke pengujian kelas lain. Sebuah contoh umum dari hal ini adalah kelas yang tergantung pada sebuah basis data: untuk menguji kelas, penguji sering menulis kode yang berinteraksi dengan basis data. Ini adalah kesalahan, karena pengujian unit biasanya melanggar ke luar batas kelas itu sendiri, dan terutama tidak boleh menyeberangi batas proses/jaringan itu karena dapat memasukkan masalah kinerja yang tidak dapat diterima terhadap kumpulan pengujian unit. Melanggar batas-batas unit tersebut mengubah pengujian unit menjadi pengujian integrasi, dan ketika kasus uji gagal, kurang jelas komponen mana yang menyebabkan kegagalan.

Sebaliknya, pengembang perangkat lunak harus membuat antarmuka abstrak untuk permohonan (query) basis data, dan kemudian menerapkan antarmuka tersebut dengan objek pura-pura mereka sendiri. Dengan mengabstraksi keterkaitan yang diperlukan ini dari kode, unit independen dapat menjadi lebih benar-benar teruji dibandingkan yang sebelumnya mungkin tercapai. Hasilnya adalah unit yang lebih berkualitas tinggi dan juga lebih mudah dipelihara.