Saya baru mengenal unit testing, saya punya satu metode web REST yang hanya memanggil DB dan mengisi DTO. Kode semu adalah
public object GetCustomer(int id)
{
CustomerDTO objCust = //get from DB
return objCust;
}
Keraguan saya adalah bagaimana menulis tes untuk metode dan jenis tes ini (Integrasi / Unit) untuk dimasukkan. Dan untuk unit test, apakah perlu menekan DB. Jika itu dan saya melewati id pelanggan dan melakukan beberapa pernyataan, data mungkin berubah pada akhirnya mengakibatkan kegagalan.
Saya pikir saya kehilangan sesuatu di sini untuk memahami konsep-konsep ini.
Jawaban:
Saat pengujian unit Anda tidak diharapkan untuk menguji dengan database, atau setidaknya, tidak dengan database yang belum Anda siapkan untuk pengujian unit. Menguji dengan database, dan dengan demikian, menguji berbagai lapisan aplikasi Anda pada saat yang sama umumnya dilihat sebagai tes integrasi . Dengan unit test Anda seharusnya hanya menguji apa metode Anda, apa yang dikembalikan tergantung pada parameter yang berbeda, dan kapan (atau tidak) itu harus gagal.
Sangat diharapkan bahwa dalam metode Anda, Anda membuat panggilan ke metode X dari kelas lain. Anda tidak menguji metode X ini sehingga yang harus Anda lakukan adalah mengejek metode ini.
Saya kira Anda sedang menulis kode di Jawa, dalam hal ini Anda memiliki kerangka kerja mengejek yang hebat seperti Mockito yang mungkin membantu Anda. Apakah Anda menggunakan kerangka mengejek atau tidak adalah pilihan Anda, saya hanya akan mengatakan mereka akan menghemat banyak waktu dan yang saya sebutkan setidaknya benar-benar tidak rumit.
Jika Anda hanya ingin menulis tiruan sendiri untuk bereksperimen, anggaplah Anda memiliki
CustomerRepository
kelas berikut :Anda dapat menulis sendiri mengejek dan kotor Anda
CustomerRepository
kelas dengan cara berikut:Kemudian, dalam kasus pengujian Anda, pada dasarnya Anda mengganti instance "standar" Anda
CustomerRepository
dengan instance tiruan yang akan memungkinkan Anda menguji metode Anda untuk berbagai hasil darigetCustomer
:Secara umum, setiap metode pengujian harus menguji satu hal saja, ini membantu menjaga tes Anda kecil dan fokus pada satu tugas.
Saya akan mengulanginya :-) Menulis seluruh kelas yang diejek membutuhkan waktu seperti yang Anda lihat. Pertimbangkan untuk menggunakan kerangka mengejek, semakin sedikit yang menulis kode, semakin sedikit kesalahan yang dibuat , bukan? Mengejek metode yang melempar pengecualian, atau mengembalikan nilai yang diberikan untuk parameter tertentu adalah sepotong kue dan membutuhkan 2 atau 3 baris (dengan setidaknya mockito)
Semoga itu membantu menguji metode REST Anda.
sumber