Pengujian unit lokal berjalan di dalam lingkungan Anda tanpa mengakses komponen jarak jauh. App Engine menyediakan utilitas pengujian yang menggunakan implementasi lokal Cloud Datastore dan layanan App Engine lainnya.
Layanan pengembangan menyimulasikan perilaku layanan yang sebenarnya secara lokal untuk pengujian. Misalnya, penggunaan datastore yang ditunjukkan dalam Menulis Pengujian Cloud Datastore dan Memcache memungkinkan Anda menguji kode datastore tanpa membuat permintaan apa pun ke datastore sebenarnya. Setiap entity yang disimpan selama pengujian unit datastore akan disimpan secara lokal dan dihapus setelah pengujian dijalankan. Anda dapat menjalankan pengujian kecil dan cepat tanpa dependensi pada datastore itu sendiri.
Dokumen ini menjelaskan cara menulis pengujian unit terhadap layanan App Engine lokal menggunakan paket pengujian Go.
Paket Pengujian Go
Anda dapat mengotomatiskan download, pembuatan, dan pengujian paket Go menggunakan
alat goapp
. goapp
adalah bagian dari
App Engine SDK untuk Go.
Kombinasi perintah goapp test
dan paket testing
Go
standar dapat digunakan untuk menjalankan pengujian unit terhadap kode aplikasi Anda.
Untuk latar belakang pengujian dengan Go, lihat bagian Pengujian Cara Menulis
Kode Go dan referensi paket
pengujian.
Pengujian unit terdapat dalam file yang berakhiran _test.go
. Misalnya,
Anda ingin menguji fungsi bernama composeNewsletter
yang
menampilkan *mail.Message
. File newsletter_test.go
berikut menunjukkan
pengujian sederhana untuk fungsi tersebut:
Pengujian ini akan dipanggil menggunakan perintah goapp test
dari dalam
direktori paket:
goapp test
Alat goapp
dapat ditemukan di direktori root App Engine SDK. Sebaiknya
masukkan direktori ini dalam variabel PATH
sistem Anda untuk
mempermudah menjalankan pengujian.
Paket aetest
Banyak panggilan fungsi ke layanan App Engine yang memerlukan context.Context
sebagai argumen. Paket appengine/aetest
yang disediakan dengan SDK
memungkinkan Anda membuat context.Context
palsu untuk menjalankan pengujian menggunakan
layanan yang disediakan di lingkungan pengembangan.
Panggilan ke aetest.NewContext
akan memulai dev_appserver.py
dalam subproses,
yang akan digunakan untuk melayani panggilan API selama pengujian. Subproses ini akan
dinonaktifkan dengan panggilan ke done
.
Untuk kontrol lebih banyak atas instance yang mendasarinya,
Anda dapat menggunakan aetest.NewInstance
. Dengan demikian, Anda dapat membuat beberapa konteks, dan
mengaitkan konteks tersebut dengan objek http.Request
.
Baca referensi paket aetest untuk mengetahui informasi selengkapnya.
Menulis pengujian Cloud Datastore dan memcache
Pengujian kode yang menggunakan datastore atau memcache dapat dilakukan dengan mudah setelah Anda membuat
context.Context
dengan paket aetest
: dalam panggilan pengujian
aetest.NewContext
, untuk membuat konteks yang akan diteruskan ke fungsi dalam uji coba.
Aplikasi demo transaction
di SDK memiliki contoh struktur
kode untuk memungkinkan pengujian, dan cara menguji kode yang menggunakan datastore:
Pengujian ini dapat dijalankan menggunakan perintah goapp test
:
goapp test ./demos/transaction
Pengujian untuk memcache mengikuti pola yang sama: siapkan status awal memcache dalam pengujian, jalankan fungsi yang sedang diuji, dan pastikan fungsi telah mengkueri/mengubah memcache seperti yang Anda harapkan.