Episode 17: oleh Toby Huang di San Francisco, CA (Januari 2021)
Episode sebelumnya
Pengujian browser adalah bentuk pengujian otomatis untuk kode chromium yang lebih end-to-end daripada pengujian unit. Pengujian browser membuat instance browser dan menguji berbagai elemen UI, bukan hanya menguji fungsionalitas input/output murni seperti pada pengujian unit. Pengujian otomatis terintegrasi penting untuk menyimulasikan pengalaman pengguna secara menyeluruh. Saat menulis pengujian browser, sering kali Anda ingin melakukan tindakan penyiapan secara terprogram yang dapat dilakukan pengguna secara manual. Untuk membantu Anda melakukannya, mixin adalah serangkaian alat untuk melakukan penyiapan pengujian browser non-trivial dengan cara yang dapat digunakan kembali.
Contoh mixin yang berguna:
GuestUserMixin
untuk menguji mode samaranUserPolicyMixin
untuk meniru kebijakan pengguna dari serverFakeGaiaMixin
untuk respons tiruan dari server GAIA
Anda dapat membuat mixin kustom sendiri untuk berbagai tujuan.
Cuplikan di bawah ini login sebagai pengguna tamu untuk pengujian Anda. Anda harus memastikan fitur Anda berfungsi dalam mode samaran.
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
LoggedInUserMixin
adalah cara yang mudah untuk login sebagai pengguna Family Link untuk pengujian Anda. Jika fitur Anda memengaruhi hal yang terkait dengan pengawasan anak,
Anda harus menguji fitur Anda untuk pengguna yang diawasi. Kemungkinan bug adalah
lupa bahwa mode samaran pengguna turunan dinonaktifkan atau tidak dapat menginstal
ekstensi tanpa persetujuan orang tua. LoggedInUserMixin
adalah mixin senyawa
yang terdiri dari mixin lainnya.
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest { protected: void SetUpOnMainThread() override { MixinBasedInProcessBrowserTest::SetUpOnMainThread(); logged_in_user_mixin_.LogInUser(); } private: LoggedInUserMixin logged_in_user_mixin_{&mixin_host_, LoggedInUserMixin::LogInType::kChild, embedded_test_server(), this}; };
Salah satu manfaat utama mixin adalah menggunakan komposisi, bukan
pewarisan, dan menghindari masalah pewarisan beberapa berlian.
Mewarisi dari lebih dari satu class dasar pengujian akan menyebabkan masalah diamond,
tetapi Anda dapat memadupadankan mixin sekaligus menghindari masalah ini. Menggunakan mixin
tidak sepenuhnya menghilangkan pewarisan karena class pengujian browser masih
perlu mewarisi dari MixinBasedInProcessBrowserTest
, tetapi untungnya
class dasar tersebut bersifat umum dan ringan.